diff options
author | Thomas Lively <tlively@google.com> | 2022-11-22 20:48:58 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-23 02:48:58 +0000 |
commit | 853b31ec89416bef0014e06f2defaef74f47b81e (patch) | |
tree | a288eeab1797ae6623c86cef6a6425c754cf498b | |
parent | f8e6d0253ba96bd26013146282ea4063f5853289 (diff) | |
download | binaryen-853b31ec89416bef0014e06f2defaef74f47b81e.tar.gz binaryen-853b31ec89416bef0014e06f2defaef74f47b81e.tar.bz2 binaryen-853b31ec89416bef0014e06f2defaef74f47b81e.zip |
Change the default type system to isorecursive (#5239)
This makes Binaryen's default type system match the WasmGC spec.
Update the way type definitions without supertypes are printed to reduce the
output diff for MVP tests that do not involve WasmGC. Also port some
type-builder.cpp tests from test/example to test/gtest since they needed to be
rewritten to work with isorecursive type anyway.
A follow-on PR will remove equirecursive types completely.
322 files changed, 4600 insertions, 4620 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index b55e9ccf8..0072b18d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ full changeset diff at the end of each section. Current Trunk ------------- +- The isorecursive WasmGC type system (i.e. --hybrid) is now the default to + match the spec. + v111 ---- diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp index d4b86f93d..a92b0a16a 100644 --- a/src/passes/Print.cpp +++ b/src/passes/Print.cpp @@ -2832,9 +2832,7 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> { void handleSignature(HeapType curr, Name name = Name()) { Signature sig = curr.getSignature(); - bool hasSupertype = - !name.is() && (getTypeSystem() == TypeSystem::Nominal || - getTypeSystem() == TypeSystem::Isorecursive); + bool hasSupertype = !name.is() && !!curr.getSuperType(); if (hasSupertype) { o << "(func_subtype"; } else { @@ -2891,8 +2889,7 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> { } } void handleArray(HeapType curr) { - bool hasSupertype = getTypeSystem() == TypeSystem::Nominal || - getTypeSystem() == TypeSystem::Isorecursive; + bool hasSupertype = !!curr.getSuperType(); if (hasSupertype) { o << "(array_subtype "; } else { @@ -2906,8 +2903,7 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> { o << ')'; } void handleStruct(HeapType curr) { - bool hasSupertype = getTypeSystem() == TypeSystem::Nominal || - getTypeSystem() == TypeSystem::Isorecursive; + bool hasSupertype = !!curr.getSuperType(); const auto& fields = curr.getStruct().fields; if (hasSupertype) { o << "(struct_subtype "; @@ -3038,8 +3034,9 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> { o << '('; printMajor(o, "func "); printName(curr->name, o); - if (getTypeSystem() == TypeSystem::Nominal || - getTypeSystem() == TypeSystem::Isorecursive) { + if (currModule && currModule->features.hasGC() && + (getTypeSystem() == TypeSystem::Nominal || + getTypeSystem() == TypeSystem::Isorecursive)) { o << " (type "; printHeapType(o, curr->type, currModule) << ')'; } diff --git a/src/wasm/wasm-type.cpp b/src/wasm/wasm-type.cpp index 9ac23bd96..da40bb10e 100644 --- a/src/wasm/wasm-type.cpp +++ b/src/wasm/wasm-type.cpp @@ -44,7 +44,7 @@ namespace wasm { -static TypeSystem typeSystem = TypeSystem::Equirecursive; +static TypeSystem typeSystem = TypeSystem::Isorecursive; void setTypeSystem(TypeSystem system) { typeSystem = system; } diff --git a/test/atomics-unshared.wast.from-wast b/test/atomics-unshared.wast.from-wast index a29819c9b..3ab6a361a 100644 --- a/test/atomics-unshared.wast.from-wast +++ b/test/atomics-unshared.wast.from-wast @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 1 1) - (func $foo + (func $foo (type $none_=>_none) (drop (i32.atomic.rmw.cmpxchg (i32.const 0) diff --git a/test/atomics-unshared.wast.fromBinary b/test/atomics-unshared.wast.fromBinary index df4096757..1e275eb6e 100644 --- a/test/atomics-unshared.wast.fromBinary +++ b/test/atomics-unshared.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 1 1) - (func $foo + (func $foo (type $none_=>_none) (drop (i32.atomic.rmw.cmpxchg (i32.const 0) diff --git a/test/atomics-unshared.wast.fromBinary.noDebugInfo b/test/atomics-unshared.wast.fromBinary.noDebugInfo index d9bb19b8e..458f99d2b 100644 --- a/test/atomics-unshared.wast.fromBinary.noDebugInfo +++ b/test/atomics-unshared.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 1 1) - (func $0 + (func $0 (type $none_=>_none) (drop (i32.atomic.rmw.cmpxchg (i32.const 0) diff --git a/test/atomics.wast.from-wast b/test/atomics.wast.from-wast index f5f891af5..7c9d18076 100644 --- a/test/atomics.wast.from-wast +++ b/test/atomics.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 (shared 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i32) (local $1 i64) (drop @@ -134,7 +134,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i32) (local $1 i64) (drop @@ -178,7 +178,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/atomics.wast.fromBinary b/test/atomics.wast.fromBinary index e3f773b83..751684f72 100644 --- a/test/atomics.wast.fromBinary +++ b/test/atomics.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 (shared 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i32) (local $1 i64) (drop @@ -134,7 +134,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i32) (local $1 i64) (drop @@ -178,7 +178,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/atomics.wast.fromBinary.noDebugInfo b/test/atomics.wast.fromBinary.noDebugInfo index e562f6a42..e802c2d8c 100644 --- a/test/atomics.wast.fromBinary.noDebugInfo +++ b/test/atomics.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 23 256)) - (func $0 + (func $0 (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $1 + (func $1 (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $2 + (func $2 (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -134,7 +134,7 @@ ) ) ) - (func $3 + (func $3 (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -178,7 +178,7 @@ ) ) ) - (func $4 + (func $4 (type $none_=>_none) (atomic.fence) ) ) diff --git a/test/atomics64.wast.from-wast b/test/atomics64.wast.from-wast index 669920d50..d2e030309 100644 --- a/test/atomics64.wast.from-wast +++ b/test/atomics64.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 (shared i64 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -69,7 +69,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -104,7 +104,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -137,7 +137,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -182,7 +182,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/atomics64.wast.fromBinary b/test/atomics64.wast.fromBinary index 60ab444ce..f1be9008d 100644 --- a/test/atomics64.wast.fromBinary +++ b/test/atomics64.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 (shared i64 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -69,7 +69,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -104,7 +104,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -137,7 +137,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -182,7 +182,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/atomics64.wast.fromBinary.noDebugInfo b/test/atomics64.wast.fromBinary.noDebugInfo index c3f508833..40b1cd25b 100644 --- a/test/atomics64.wast.fromBinary.noDebugInfo +++ b/test/atomics64.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared i64 23 256)) - (func $0 + (func $0 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -69,7 +69,7 @@ (local.get $1) ) ) - (func $1 + (func $1 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -104,7 +104,7 @@ ) ) ) - (func $2 + (func $2 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -137,7 +137,7 @@ ) ) ) - (func $3 + (func $3 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -182,7 +182,7 @@ ) ) ) - (func $4 + (func $4 (type $none_=>_none) (atomic.fence) ) ) diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt index 9200bac2a..c59c2dac1 100644 --- a/test/binaryen.js/kitchen-sink.js.txt +++ b/test/binaryen.js/kitchen-sink.js.txt @@ -150,7 +150,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} (export "a-global-exp" (global $a-global)) (export "a-tag-exp" (tag $a-tag)) (start $starter) - (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (type $i32_i64_f32_f64_=>_i32) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (block $the-body (result i32) (block $the-nothing @@ -2228,7 +2228,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} (i32.const 42) ) ) - (func $starter + (func $starter (type $none_=>_none) (nop) ) ) @@ -2254,7 +2254,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} (export "a-global-exp" (global $a-global)) (export "a-tag-exp" (tag $a-tag)) (start $starter) - (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (type $i32_i64_f32_f64_=>_i32) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (block $the-body (result i32) (block $the-nothing @@ -4332,7 +4332,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} (i32.const 42) ) ) - (func $starter + (func $starter (type $none_=>_none) (nop) ) ) @@ -4813,7 +4813,7 @@ module loaded from binary form: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $a-global i32 (i32.const 3)) (tag $a-tag (param i32 i32)) - (func $adder (param $0 i32) (param $1 i32) (result i32) + (func $adder (type $i32_i32_=>_i32) (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -4855,7 +4855,7 @@ test_parsing text: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $a-global i32 (i32.const 3)) (tag $a-tag (param i32)) - (func $adder (param $0 i32) (param $1 i32) (result i32) + (func $adder (type $i32_i32_=>_i32) (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -4869,7 +4869,7 @@ module loaded from text form: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $a-global i32 (i32.const 3)) (tag $a-tag (param i32)) - (func $ADD_ER (param $0 i32) (param $1 i32) (result i32) + (func $ADD_ER (type $i32_i32_=>_i32) (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) diff --git a/test/complexTextNames.wast.from-wast b/test/complexTextNames.wast.from-wast index 76d91ba45..319978b18 100644 --- a/test/complexTextNames.wast.from-wast +++ b/test/complexTextNames.wast.from-wast @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $foo\20\28.bar\29 + (func $foo\20\28.bar\29 (type $none_=>_none) (nop) ) - (func $1 + (func $1 (type $none_=>_none) (call $foo\20\28.bar\29) ) ) diff --git a/test/complexTextNames.wast.fromBinary b/test/complexTextNames.wast.fromBinary index 69ded01be..05db375bc 100644 --- a/test/complexTextNames.wast.fromBinary +++ b/test/complexTextNames.wast.fromBinary @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $foo\20\28.bar\29 + (func $foo\20\28.bar\29 (type $none_=>_none) (nop) ) - (func $1 + (func $1 (type $none_=>_none) (call $foo\20\28.bar\29) ) ) diff --git a/test/complexTextNames.wast.fromBinary.noDebugInfo b/test/complexTextNames.wast.fromBinary.noDebugInfo index 5c31ca04c..91687028f 100644 --- a/test/complexTextNames.wast.fromBinary.noDebugInfo +++ b/test/complexTextNames.wast.fromBinary.noDebugInfo @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $0 + (func $0 (type $none_=>_none) (nop) ) - (func $1 + (func $1 (type $none_=>_none) (call $0) ) ) diff --git a/test/ctor-eval/bad-indirect-call.wast.out b/test/ctor-eval/bad-indirect-call.wast.out index 8ab14a36d..2781ba559 100644 --- a/test/ctor-eval/bad-indirect-call.wast.out +++ b/test/ctor-eval/bad-indirect-call.wast.out @@ -5,7 +5,7 @@ (table $0 1 1 funcref) (elem (i32.const 0) $call-indirect) (export "test1" (func $test1)) - (func $test1 + (func $test1 (type $v) (call_indirect $0 (type $v) (i32.const 1) ) @@ -14,7 +14,7 @@ (i32.const 120) ) ) - (func $call-indirect + (func $call-indirect (type $v) (i32.store8 (i32.const 40) (i32.const 67) diff --git a/test/ctor-eval/bad-indirect-call2.wast.out b/test/ctor-eval/bad-indirect-call2.wast.out index 3ae51dfa8..6d7a630d8 100644 --- a/test/ctor-eval/bad-indirect-call2.wast.out +++ b/test/ctor-eval/bad-indirect-call2.wast.out @@ -6,7 +6,7 @@ (table $0 2 2 funcref) (elem (i32.const 0) $_abort $call-indirect) (export "test1" (func $test1)) - (func $test1 + (func $test1 (type $v) (call_indirect $0 (type $v) (i32.const 0) ) @@ -15,7 +15,7 @@ (i32.const 120) ) ) - (func $call-indirect + (func $call-indirect (type $v) (i32.store8 (i32.const 40) (i32.const 67) diff --git a/test/ctor-eval/bad-indirect-call3.wast.out b/test/ctor-eval/bad-indirect-call3.wast.out index 2f3cd9709..af0b1b962 100644 --- a/test/ctor-eval/bad-indirect-call3.wast.out +++ b/test/ctor-eval/bad-indirect-call3.wast.out @@ -7,13 +7,13 @@ (table $0 1 1 funcref) (elem (i32.const 0) $callee) (export "sig_mismatch" (func $sig_mismatch)) - (func $callee (param $0 externref) + (func $callee (type $externref_=>_none) (param $0 externref) (i32.store8 (i32.const 40) (i32.const 67) ) ) - (func $sig_mismatch + (func $sig_mismatch (type $none_=>_none) (call_indirect $0 (type $funcref_=>_none) (ref.null nofunc) (i32.const 0) diff --git a/test/ctor-eval/basics-flatten.wast.out b/test/ctor-eval/basics-flatten.wast.out index f13d5f7a0..512cf1987 100644 --- a/test/ctor-eval/basics-flatten.wast.out +++ b/test/ctor-eval/basics-flatten.wast.out @@ -2,7 +2,7 @@ (type $v (func)) (memory $0 256 256) (data (i32.const 10) "nas\00\00\00aka\00yzkx waka wakm\00\00\00\00\00\00C") - (func $call-indirect + (func $call-indirect (type $v) (i32.store8 (i32.const 40) (i32.const 67) diff --git a/test/ctor-eval/basics.wast.out b/test/ctor-eval/basics.wast.out index 8d82afc80..34fb4a7c7 100644 --- a/test/ctor-eval/basics.wast.out +++ b/test/ctor-eval/basics.wast.out @@ -2,7 +2,7 @@ (type $v (func)) (memory $0 256 256) (data (i32.const 10) "nas\00\00\00aka yzkx waka wakm\00\00\00\00\00\00C") - (func $call-indirect + (func $call-indirect (type $v) (i32.store8 (i32.const 40) (i32.const 67) diff --git a/test/ctor-eval/gc-2.wast.out b/test/ctor-eval/gc-2.wast.out index ce30a27e7..c6d8931b8 100644 --- a/test/ctor-eval/gc-2.wast.out +++ b/test/ctor-eval/gc-2.wast.out @@ -11,7 +11,7 @@ (global $global2 (mut (ref null $struct)) (global.get $ctor-eval$global_0)) (global $global3 (ref $struct) (global.get $ctor-eval$global_0)) (export "keepalive" (func $1)) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (select (struct.get $struct 0 (ref.cast_static $struct diff --git a/test/ctor-eval/gc-array.wast.out b/test/ctor-eval/gc-array.wast.out index d78eba852..8da67f758 100644 --- a/test/ctor-eval/gc-array.wast.out +++ b/test/ctor-eval/gc-array.wast.out @@ -12,7 +12,7 @@ (i32.const 1337) )) (export "keepalive" (func $1)) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (i32.add (array.get $array (global.get $global1) diff --git a/test/ctor-eval/gc.wast.out b/test/ctor-eval/gc.wast.out index 45e5ff5ca..6ca1f50d9 100644 --- a/test/ctor-eval/gc.wast.out +++ b/test/ctor-eval/gc.wast.out @@ -16,7 +16,7 @@ )) (export "test1" (func $0_0)) (export "keepalive" (func $1)) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (i32.add (struct.get $struct 0 (global.get $global1) @@ -26,7 +26,7 @@ ) ) ) - (func $0_0 + (func $0_0 (type $none_=>_none) (local $0 (ref $struct)) (local.set $0 (global.get $ctor-eval$global_0) diff --git a/test/ctor-eval/global-get-init.wast.out b/test/ctor-eval/global-get-init.wast.out index ad0110039..c5104e662 100644 --- a/test/ctor-eval/global-get-init.wast.out +++ b/test/ctor-eval/global-get-init.wast.out @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (export "test1" (func $test1)) - (func $test1 + (func $test1 (type $none_=>_none) (nop) ) ) diff --git a/test/ctor-eval/globals.wast.out b/test/ctor-eval/globals.wast.out index 1165d9255..c29507c8e 100644 --- a/test/ctor-eval/globals.wast.out +++ b/test/ctor-eval/globals.wast.out @@ -3,7 +3,7 @@ (global $g1 (mut i32) (i32.const 50)) (global $g2 (mut i32) (i32.const 40)) (export "keepalive" (func $keepalive)) - (func $keepalive (result i32) + (func $keepalive (type $none_=>_i32) (result i32) (i32.add (global.get $g1) (global.get $g2) diff --git a/test/ctor-eval/ignore-external-input-gc.wast.out b/test/ctor-eval/ignore-external-input-gc.wast.out index 3e7a8f429..0b45f89d6 100644 --- a/test/ctor-eval/ignore-external-input-gc.wast.out +++ b/test/ctor-eval/ignore-external-input-gc.wast.out @@ -5,12 +5,12 @@ (global $global2 (mut i32) (i32.const 20)) (export "test2" (func $1)) (export "keepalive" (func $2)) - (func $1 (param $any (ref any)) + (func $1 (type $ref|any|_=>_none) (param $any (ref any)) (global.set $global2 (i32.const 22) ) ) - (func $2 (result i32) + (func $2 (type $none_=>_i32) (result i32) (i32.add (global.get $global1) (global.get $global2) diff --git a/test/ctor-eval/ignore-external-input.wast.out b/test/ctor-eval/ignore-external-input.wast.out index d61f2e6b9..aec2a6bbb 100644 --- a/test/ctor-eval/ignore-external-input.wast.out +++ b/test/ctor-eval/ignore-external-input.wast.out @@ -5,7 +5,7 @@ (memory $0 256 256) (data (i32.const 28) "aaaa") (export "test3" (func $3)) - (func $3 + (func $3 (type $none_=>_none) (drop (call $wasi_something_else) ) diff --git a/test/ctor-eval/imported-global-2.wast.out b/test/ctor-eval/imported-global-2.wast.out index ff71672a9..8f4fe2d7b 100644 --- a/test/ctor-eval/imported-global-2.wast.out +++ b/test/ctor-eval/imported-global-2.wast.out @@ -4,7 +4,7 @@ (memory $0 256 256) (export "test1" (func $0)) (export "keepalive" (func $1)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (local $temp i32) (local.set $temp (global.get $imported) @@ -15,7 +15,7 @@ ) (local.get $temp) ) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (drop (i32.load (i32.const 13) diff --git a/test/ctor-eval/imported-global.wast.out b/test/ctor-eval/imported-global.wast.out index e141211b1..269dbac73 100644 --- a/test/ctor-eval/imported-global.wast.out +++ b/test/ctor-eval/imported-global.wast.out @@ -3,7 +3,7 @@ (memory $0 256 256) (data (i32.const 10) "waka waka waka waka waka") (export "test1" (func $test1)) - (func $test1 + (func $test1 (type $none_=>_none) (i32.store8 (i32.const 13) (i32.const 115) diff --git a/test/ctor-eval/indirect-call3.wast.out b/test/ctor-eval/indirect-call3.wast.out index 1c98857a6..c4653d69e 100644 --- a/test/ctor-eval/indirect-call3.wast.out +++ b/test/ctor-eval/indirect-call3.wast.out @@ -3,7 +3,7 @@ (import "env" "_abort" (func $_abort)) (memory $0 256 256) (data (i32.const 10) "waka waka xaka waka waka\00\00\00\00\00\00C") - (func $call-indirect + (func $call-indirect (type $v) (i32.store8 (i32.const 40) (i32.const 67) diff --git a/test/ctor-eval/just_some.wast.out b/test/ctor-eval/just_some.wast.out index cb8c06fb9..c45017b92 100644 --- a/test/ctor-eval/just_some.wast.out +++ b/test/ctor-eval/just_some.wast.out @@ -4,10 +4,10 @@ (data (i32.const 10) "wasa waka waka waka waka") (export "test2" (func $test2)) (export "test3" (func $test3)) - (func $test2 + (func $test2 (type $none_=>_none) (unreachable) ) - (func $test3 + (func $test3 (type $none_=>_none) (i32.store8 (i32.const 13) (i32.const 113) diff --git a/test/ctor-eval/memory-init.wast.out b/test/ctor-eval/memory-init.wast.out index 6019ea277..f476a275c 100644 --- a/test/ctor-eval/memory-init.wast.out +++ b/test/ctor-eval/memory-init.wast.out @@ -4,7 +4,7 @@ (data (i32.const 0) "__________") (data (i32.const 20) "__________") (export "test1" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (i32.store8 (i32.const 4) (i32.const 100) diff --git a/test/ctor-eval/overlapping-segments.wast.out b/test/ctor-eval/overlapping-segments.wast.out index 5a5447391..4e74f3786 100644 --- a/test/ctor-eval/overlapping-segments.wast.out +++ b/test/ctor-eval/overlapping-segments.wast.out @@ -5,13 +5,13 @@ (elem $0 (i32.const 9) $1) (elem $1 (i32.const 9) $0) (export "test1" (func $2)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (unreachable) ) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (i32.const 65) ) - (func $2 + (func $2 (type $none_=>_none) (drop (call_indirect $0 (type $none_=>_i32) (i32.const 9) diff --git a/test/ctor-eval/params.wast.out b/test/ctor-eval/params.wast.out index 6e52bea89..e327570ac 100644 --- a/test/ctor-eval/params.wast.out +++ b/test/ctor-eval/params.wast.out @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) (export "test1" (func $0)) - (func $0 (param $x i32) + (func $0 (type $i32_=>_none) (param $x i32) (nop) ) ) diff --git a/test/ctor-eval/partial-locals-tee.wast.out b/test/ctor-eval/partial-locals-tee.wast.out index cb2653198..edf7d684d 100644 --- a/test/ctor-eval/partial-locals-tee.wast.out +++ b/test/ctor-eval/partial-locals-tee.wast.out @@ -5,7 +5,7 @@ (memory $0 256 256) (data (i32.const 10) "__s______________") (export "test1" (func $test1_0)) - (func $test1_0 + (func $test1_0 (type $none_=>_none) (call $import (i32.const 1) (i32.const 50) diff --git a/test/ctor-eval/partial-locals.wast.out b/test/ctor-eval/partial-locals.wast.out index 14f102b69..0cfb70777 100644 --- a/test/ctor-eval/partial-locals.wast.out +++ b/test/ctor-eval/partial-locals.wast.out @@ -5,7 +5,7 @@ (memory $0 256 256) (data (i32.const 10) "__s______________") (export "test1" (func $test1_0)) - (func $test1_0 + (func $test1_0 (type $none_=>_none) (local $0 i32) (local.set $0 (i32.const 100) diff --git a/test/ctor-eval/partial.wast.out b/test/ctor-eval/partial.wast.out index 4596a16a3..a7a75b5ea 100644 --- a/test/ctor-eval/partial.wast.out +++ b/test/ctor-eval/partial.wast.out @@ -5,7 +5,7 @@ (data (i32.const 10) "__s______________") (export "test1" (func $test1_0)) (export "keepalive" (func $test1)) - (func $test1 + (func $test1 (type $none_=>_none) (i32.store8 (i32.const 12) (i32.const 115) @@ -16,7 +16,7 @@ (i32.const 114) ) ) - (func $test1_0 + (func $test1_0 (type $none_=>_none) (call $import) (i32.store8 (i32.const 13) diff --git a/test/ctor-eval/results.wast.out b/test/ctor-eval/results.wast.out index ae5172324..0194cabb6 100644 --- a/test/ctor-eval/results.wast.out +++ b/test/ctor-eval/results.wast.out @@ -11,36 +11,36 @@ (export "test3" (func $test3_0)) (export "test5" (func $test5_0)) (export "keepalive" (func $5)) - (func $test1 + (func $test1 (type $none_=>_none) (global.set $global1 (i32.const 11) ) ) - (func $test2 + (func $test2 (type $none_=>_none) (global.set $global2 (i32.const 12) ) ) - (func $test3 (result i32) + (func $test3 (type $none_=>_i32) (result i32) (global.set $global3 (i32.const 13) ) (i32.const 42) ) - (func $test4 (result i32) + (func $test4 (type $none_=>_i32) (result i32) (global.set $global4 (i32.const 14) ) (i32.const 55) ) - (func $test5 (result i32) + (func $test5 (type $none_=>_i32) (result i32) (global.set $global5 (i32.const 15) ) (call $import) (i32.const 100) ) - (func $5 (result i32) + (func $5 (type $none_=>_i32) (result i32) (call $test1) (call $test2) (drop @@ -66,13 +66,13 @@ ) ) ) - (func $test1_0 + (func $test1_0 (type $none_=>_none) (nop) ) - (func $test3_0 (result i32) + (func $test3_0 (type $none_=>_i32) (result i32) (i32.const 42) ) - (func $test5_0 (result i32) + (func $test5_0 (type $none_=>_i32) (result i32) (call $import) (i32.const 100) ) diff --git a/test/ctor-eval/unsafe_call.wast.out b/test/ctor-eval/unsafe_call.wast.out index 402bc8771..5fbff1266 100644 --- a/test/ctor-eval/unsafe_call.wast.out +++ b/test/ctor-eval/unsafe_call.wast.out @@ -3,7 +3,7 @@ (memory $0 256 256) (data (i32.const 10) "waka waka waka waka waka") (export "test1" (func $test1)) - (func $test1 + (func $test1 (type $none_=>_none) (call $unsafe-to-call) (i32.store (i32.const 12) @@ -18,7 +18,7 @@ (i32.const 120) ) ) - (func $unsafe-to-call + (func $unsafe-to-call (type $none_=>_none) (unreachable) ) ) diff --git a/test/duplicate_types.wast.from-wast b/test/duplicate_types.wast.from-wast index ce6637bf6..b5df2aaa8 100644 --- a/test/duplicate_types.wast.from-wast +++ b/test/duplicate_types.wast.from-wast @@ -1,10 +1,10 @@ (module (type $0 (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $f0 (param $0 i32) + (func $f0 (type $0) (param $0 i32) (nop) ) - (func $f1 (param $0 i32) (result i32) + (func $f1 (type $i32_=>_i32) (param $0 i32) (result i32) (i32.const 0) ) ) diff --git a/test/duplicate_types.wast.fromBinary b/test/duplicate_types.wast.fromBinary index 2c444d3c2..060180086 100644 --- a/test/duplicate_types.wast.fromBinary +++ b/test/duplicate_types.wast.fromBinary @@ -1,10 +1,10 @@ (module (type $0 (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $f0 (param $0 i32) + (func $f0 (type $0) (param $0 i32) (nop) ) - (func $f1 (param $0 i32) (result i32) + (func $f1 (type $i32_=>_i32) (param $0 i32) (result i32) (i32.const 0) ) ) diff --git a/test/duplicate_types.wast.fromBinary.noDebugInfo b/test/duplicate_types.wast.fromBinary.noDebugInfo index 93dc2fe22..6e2be8e41 100644 --- a/test/duplicate_types.wast.fromBinary.noDebugInfo +++ b/test/duplicate_types.wast.fromBinary.noDebugInfo @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $0 (param $0 i32) + (func $0 (type $i32_=>_none) (param $0 i32) (nop) ) - (func $1 (param $0 i32) (result i32) + (func $1 (type $i32_=>_i32) (param $0 i32) (result i32) (i32.const 0) ) ) diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index d59c9e0c7..8dd9260d5 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -2089,7 +2089,7 @@ void test_func_opt() { void test_typesystem() { BinaryenTypeSystem defaultTypeSystem = BinaryenGetTypeSystem(); - assert(defaultTypeSystem == BinaryenTypeSystemEquirecursive()); + assert(defaultTypeSystem == BinaryenTypeSystemIsorecursive()); printf("BinaryenTypeSystemEquirecursive: %d\n", BinaryenTypeSystemEquirecursive()); BinaryenSetTypeSystem(BinaryenTypeSystemNominal()); diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index 408c06444..857988419 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -99,7 +99,7 @@ BinaryenFeatureAll: 126975 (export "mem" (memory $0)) (export "kitchen_sinker" (func "$kitchen()sinker")) (start $starter) - (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (type $i32_i64_f32_f64_=>_i32) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (local $5 externref) (block $the-body (result i32) @@ -2454,7 +2454,7 @@ BinaryenFeatureAll: 126975 (i32.const 42) ) ) - (func $starter + (func $starter (type $none_=>_none) (nop) ) ) @@ -3037,10 +3037,10 @@ TypeBuilderErrorReasonForwardSupertypeReference: 2 TypeBuilderErrorReasonForwardChildReference: 3 module with recursive GC types: (module - (type $SomeArray (array_subtype (mut (ref null $SomeArray)) data)) - (type $SomeStruct (struct_subtype (field $SomeField (mut (ref null $SomeStruct))) data)) - (type $SomeSignature (func_subtype (param (ref null $SomeSignature) (ref null $SomeArray)) (result (ref null $SomeSignature)) func)) - (type $none_=>_none (func_subtype func)) + (type $SomeArray (array (mut (ref null $SomeArray)))) + (type $SomeStruct (struct (field $SomeField (mut (ref null $SomeStruct))))) + (type $SomeSignature (func (param (ref null $SomeSignature) (ref null $SomeArray)) (result (ref null $SomeSignature)))) + (type $none_=>_none (func)) (type $SomeSubStruct (struct_subtype (field $SomeField (mut (ref null $SomeStruct))) (field $SomePackedField i8) $SomeStruct)) (func $test (type $none_=>_none) (local $0 (ref null $SomeArray)) diff --git a/test/example/module-splitting.txt b/test/example/module-splitting.txt index 6ebcb96c7..79221d664 100644 --- a/test/example/module-splitting.txt +++ b/test/example/module-splitting.txt @@ -110,7 +110,7 @@ Secondary: Before: (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -118,7 +118,7 @@ Keeping: foo After: (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -131,7 +131,7 @@ Before: (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -140,7 +140,7 @@ After: (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -154,7 +154,7 @@ Before: (type $i32_=>_i32 (func (param i32) (result i32))) (table $table 1 funcref) (elem (i32.const 0) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -165,7 +165,7 @@ After: (table $table 1 funcref) (elem (i32.const 0) $foo) (export "%table" (table $table)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -180,7 +180,7 @@ Before: (type $i32_=>_i32 (func (param i32) (result i32))) (table $table 2 funcref) (elem (i32.const 0) $foo $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -191,7 +191,7 @@ After: (table $table 2 funcref) (elem (i32.const 0) $foo $foo) (export "%table" (table $table)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -207,7 +207,7 @@ Before: (import "env" "base" (global $base i32)) (table $table 1 funcref) (elem (global.get $base) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -220,7 +220,7 @@ After: (elem (global.get $base) $foo) (export "%table" (table $table)) (export "%global" (global $base)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -237,7 +237,7 @@ Before: (import "env" "base" (global $base i32)) (table $table 2 funcref) (elem (global.get $base) $foo $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -250,7 +250,7 @@ After: (elem (global.get $base) $foo $foo) (export "%table" (table $table)) (export "%global" (global $base)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -332,7 +332,7 @@ Secondary: Before: (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -343,7 +343,7 @@ After: Secondary: (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -353,7 +353,7 @@ Before: (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -366,7 +366,7 @@ After: (elem (i32.const 0) $placeholder_0) (export "foo" (func $foo)) (export "%table" (table $0)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $0 (type $i32_=>_i32) (local.get $0) (i32.const 0) @@ -378,7 +378,7 @@ Secondary: (type $i32_=>_i32 (func (param i32) (result i32))) (import "primary" "%table" (table $0 1 funcref)) (elem (i32.const 0) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -389,7 +389,7 @@ Before: (type $i32_=>_i32 (func (param i32) (result i32))) (table $table 1 funcref) (elem (i32.const 0) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -407,7 +407,7 @@ Secondary: (type $i32_=>_i32 (func (param i32) (result i32))) (import "primary" "%table" (table $table 1 funcref)) (elem (i32.const 0) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -418,7 +418,7 @@ Before: (type $i32_=>_i32 (func (param i32) (result i32))) (table $table 2 funcref) (elem (i32.const 0) $foo $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -437,7 +437,7 @@ Secondary: (type $i32_=>_i32 (func (param i32) (result i32))) (import "primary" "%table" (table $table 2 funcref)) (elem (i32.const 0) $foo $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -449,7 +449,7 @@ Before: (table $table 1000 funcref) (elem (i32.const 42) $foo) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -462,7 +462,7 @@ After: (elem (i32.const 42) $placeholder_42) (export "foo" (func $foo)) (export "%table" (table $table)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $table (type $i32_=>_i32) (local.get $0) (i32.const 42) @@ -474,7 +474,7 @@ Secondary: (type $i32_=>_i32 (func (param i32) (result i32))) (import "primary" "%table" (table $table 1000 funcref)) (elem (i32.const 42) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -487,7 +487,7 @@ Before: (table $table 1000 funcref) (elem (global.get $base) $foo) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -502,7 +502,7 @@ After: (export "foo" (func $foo)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $table (type $i32_=>_i32) (local.get $0) (global.get $base) @@ -515,7 +515,7 @@ Secondary: (import "primary" "%table" (table $table 1000 funcref)) (import "primary" "%global" (global $base i32)) (elem (global.get $base) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -528,7 +528,7 @@ Before: (table $table 1000 funcref) (elem (global.get $base) $foo $foo) (export "foo" (func $foo)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -544,7 +544,7 @@ After: (export "foo" (func $foo)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $table (type $i32_=>_i32) (local.get $0) (global.get $base) @@ -557,7 +557,7 @@ Secondary: (import "primary" "%table" (table $table 1000 funcref)) (import "primary" "%global" (global $base i32)) (elem (global.get $base) $foo $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -571,10 +571,10 @@ Before: (table $table 1000 funcref) (elem (global.get $base) $null $foo) (export "foo" (func $foo)) - (func $null + (func $null (type $none_=>_none) (nop) ) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -591,10 +591,10 @@ After: (export "%null" (func $null)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $null + (func $null (type $none_=>_none) (nop) ) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $table (type $i32_=>_i32) (local.get $0) (i32.add @@ -612,7 +612,7 @@ Secondary: (import "primary" "%global" (global $base i32)) (import "primary" "%null" (func $null)) (elem (global.get $base) $null $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (local.get $0) ) ) @@ -621,10 +621,10 @@ Secondary: Before: (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -632,10 +632,10 @@ Keeping: bar, foo After: (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -647,10 +647,10 @@ Secondary: Before: (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -659,7 +659,7 @@ After: (module (type $none_=>_none (func)) (export "%bar" (func $bar)) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -667,7 +667,7 @@ Secondary: (module (type $none_=>_none (func)) (import "primary" "%bar" (func $bar)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) ) @@ -676,10 +676,10 @@ Secondary: Before: (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -691,7 +691,7 @@ After: (table $0 1 funcref) (elem (i32.const 0) $placeholder_0) (export "%table" (table $0)) - (func $foo + (func $foo (type $none_=>_none) (call_indirect $0 (type $none_=>_none) (i32.const 0) ) @@ -702,7 +702,7 @@ Secondary: (type $none_=>_none (func)) (import "primary" "%table" (table $0 1 funcref)) (elem (i32.const 0) $bar) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -711,10 +711,10 @@ Secondary: Before: (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -725,10 +725,10 @@ After: Secondary: (module (type $none_=>_none (func)) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (call $bar) ) ) @@ -738,10 +738,10 @@ Before: (module (type $none_=>_none (func)) (export "%foo" (func $bar)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (call $foo) ) ) @@ -755,10 +755,10 @@ After: (export "%foo" (func $bar)) (export "%foo_0" (func $foo)) (export "%table" (table $0)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (call_indirect $0 (type $none_=>_none) (i32.const 0) ) @@ -770,7 +770,7 @@ Secondary: (import "primary" "%table" (table $0 1 funcref)) (import "primary" "%foo_0" (func $foo)) (elem (i32.const 0) $bar) - (func $bar + (func $bar (type $none_=>_none) (call $foo) ) ) @@ -781,16 +781,16 @@ Before: (type $none_=>_none (func)) (table $table 4 funcref) (elem (i32.const 0) $foo $bar $baz $quux) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -803,10 +803,10 @@ After: (table $table 4 funcref) (elem (i32.const 0) $placeholder_0 $bar $placeholder_2 $quux) (export "%table" (table $table)) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -816,10 +816,10 @@ Secondary: (import "primary" "%table" (table $table 4 funcref)) (elem $0 (i32.const 0) $foo) (elem $1 (i32.const 2) $baz) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) @@ -831,16 +831,16 @@ Before: (import "env" "base" (global $base i32)) (table $table 4 funcref) (elem (global.get $base) $foo $bar $baz $quux) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -856,10 +856,10 @@ After: (export "%bar" (func $bar)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -870,10 +870,10 @@ Secondary: (import "primary" "%global" (global $base i32)) (import "primary" "%bar" (func $bar)) (elem (global.get $base) $foo $bar $baz) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) @@ -884,16 +884,16 @@ Before: (type $none_=>_none (func)) (table $table 4 funcref) (elem (i32.const 0) $foo $bar $baz $quux) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -907,7 +907,7 @@ After: (table $table 4 funcref) (elem (i32.const 0) $placeholder_0 $placeholder_1 $baz $placeholder_3) (export "%table" (table $table)) - (func $baz + (func $baz (type $none_=>_none) (nop) ) ) @@ -917,13 +917,13 @@ Secondary: (import "primary" "%table" (table $table 4 funcref)) (elem $0 (i32.const 0) $foo $bar) (elem $1 (i32.const 3) $quux) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -935,16 +935,16 @@ Before: (import "env" "base" (global $base i32)) (table $table 4 funcref) (elem (global.get $base) $foo $bar $baz $quux) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $baz + (func $baz (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -961,7 +961,7 @@ After: (export "%baz" (func $baz)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $baz + (func $baz (type $none_=>_none) (nop) ) ) @@ -972,13 +972,13 @@ Secondary: (import "primary" "%global" (global $base i32)) (import "primary" "%baz" (func $baz)) (elem (global.get $base) $foo $bar $baz $quux) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $quux + (func $quux (type $none_=>_none) (nop) ) ) @@ -990,10 +990,10 @@ Before: (import "env" "base" (global $base i32)) (table $table 2 funcref) (elem (global.get $base) $foo $bar) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (call $foo) ) ) @@ -1008,7 +1008,7 @@ After: (export "%foo" (func $foo)) (export "%table" (table $table)) (export "%global" (global $base)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) @@ -1019,7 +1019,7 @@ Secondary: (import "primary" "%global" (global $base i32)) (import "primary" "%foo" (func $foo)) (elem (global.get $base) $foo $bar) - (func $bar + (func $bar (type $none_=>_none) (call $foo) ) ) @@ -1030,12 +1030,12 @@ Before: (type $i32_=>_i32 (func (param i32) (result i32))) (table $table 1 1 funcref) (elem (i32.const 0) $foo) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call $bar (i32.const 0) ) ) - (func $bar (param $0 i32) (result i32) + (func $bar (type $i32_=>_i32) (param $0 i32) (result i32) (call $foo (i32.const 1) ) @@ -1050,7 +1050,7 @@ After: (elem (i32.const 0) $foo $placeholder_1) (export "%foo" (func $foo)) (export "%table" (table $table)) - (func $foo (param $0 i32) (result i32) + (func $foo (type $i32_=>_i32) (param $0 i32) (result i32) (call_indirect $table (type $i32_=>_i32) (i32.const 0) (i32.const 1) @@ -1063,7 +1063,7 @@ Secondary: (import "primary" "%table" (table $table 2 2 funcref)) (import "primary" "%foo" (func $foo (param i32) (result i32))) (elem (i32.const 1) $bar) - (func $bar (param $0 i32) (result i32) + (func $bar (type $i32_=>_i32) (param $0 i32) (result i32) (call $foo (i32.const 1) ) @@ -1076,7 +1076,7 @@ Before: (type $none_=>_none (func)) (export "foo1" (func $foo)) (export "foo2" (func $foo)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) @@ -1090,7 +1090,7 @@ After: (export "foo1" (func $foo)) (export "foo2" (func $foo)) (export "%table" (table $0)) - (func $foo + (func $foo (type $none_=>_none) (call_indirect $0 (type $none_=>_none) (i32.const 0) ) @@ -1101,7 +1101,7 @@ Secondary: (type $none_=>_none (func)) (import "primary" "%table" (table $0 1 funcref)) (elem (i32.const 0) $foo) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) @@ -1120,34 +1120,34 @@ Minimized names primary: (export "%g" (func $6)) (export "%h" (func $8)) (export "%i" (func $9)) - (func $0 + (func $0 (type $none_=>_none) (nop) ) - (func $1 + (func $1 (type $none_=>_none) (nop) ) - (func $2 + (func $2 (type $none_=>_none) (nop) ) - (func $3 + (func $3 (type $none_=>_none) (nop) ) - (func $4 + (func $4 (type $none_=>_none) (nop) ) - (func $5 + (func $5 (type $none_=>_none) (nop) ) - (func $6 + (func $6 (type $none_=>_none) (nop) ) - (func $7 + (func $7 (type $none_=>_none) (nop) ) - (func $8 + (func $8 (type $none_=>_none) (nop) ) - (func $9 + (func $9 (type $none_=>_none) (nop) ) ) @@ -1165,7 +1165,7 @@ Minimized names secondary: (import "primary" "%b" (func $7)) (import "primary" "%h" (func $8)) (import "primary" "%i" (func $9)) - (func $call + (func $call (type $none_=>_none) (call $0) (call $1) (call $2) diff --git a/test/example/type-builder.cpp b/test/example/type-builder.cpp index 7da2f8f03..2ce064b5f 100644 --- a/test/example/type-builder.cpp +++ b/test/example/type-builder.cpp @@ -18,26 +18,26 @@ void test_canonicalization() { TypeBuilder builder(4); - Type tempSigRef1 = builder.getTempRefType(builder[2], Nullable); - Type tempSigRef2 = builder.getTempRefType(builder[3], Nullable); + Type tempSigRef1 = builder.getTempRefType(builder[0], Nullable); + Type tempSigRef2 = builder.getTempRefType(builder[1], Nullable); assert(tempSigRef1 != tempSigRef2); assert(tempSigRef1 != Type(sig, Nullable)); assert(tempSigRef2 != Type(sig, Nullable)); - builder[0] = + builder[0] = Signature(Type::none, Type::none); + builder[1] = Signature(Type::none, Type::none); + builder[2] = Struct({Field(tempSigRef1, Immutable), Field(tempSigRef1, Immutable)}); - builder[1] = + builder[3] = Struct({Field(tempSigRef2, Immutable), Field(tempSigRef2, Immutable)}); - builder[2] = Signature(Type::none, Type::none); - builder[3] = Signature(Type::none, Type::none); std::vector<HeapType> built = *builder.build(); - assert(built[0] == struct_); - assert(built[1] == struct_); - assert(built[2] == sig); - assert(built[3] == sig); + assert(built[0] == sig); + assert(built[1] == sig); + assert(built[2] == struct_); + assert(built[3] == struct_); } // Check that defined basic HeapTypes are handled correctly. @@ -92,6 +92,7 @@ void test_recursive() { std::vector<HeapType> built; { TypeBuilder builder(2); + builder.createRecGroup(0, 2); Type temp0 = builder.getTempRefType(builder[0], Nullable); Type temp1 = builder.getTempRefType(builder[1], Nullable); builder[0] = Signature(Type::none, temp1); @@ -103,7 +104,6 @@ void test_recursive() { std::cout << print(built[1]) << "\n\n"; assert(built[0].getSignature().results.getHeapType() == built[1]); assert(built[1].getSignature().results.getHeapType() == built[0]); - assert(built[0] == built[1]); } { @@ -111,6 +111,7 @@ void test_recursive() { std::vector<HeapType> built; { TypeBuilder builder(5); + builder.createRecGroup(0, 5); Type temp0 = builder.getTempRefType(builder[0], Nullable); Type temp1 = builder.getTempRefType(builder[1], Nullable); Type temp2 = builder.getTempRefType(builder[2], Nullable); @@ -134,10 +135,10 @@ void test_recursive() { assert(built[2].getSignature().results.getHeapType() == built[3]); assert(built[3].getSignature().results.getHeapType() == built[4]); assert(built[4].getSignature().results.getHeapType() == built[0]); - assert(built[0] == built[1]); - assert(built[1] == built[2]); - assert(built[2] == built[3]); - assert(built[3] == built[4]); + assert(built[0] != built[1]); + assert(built[1] != built[2]); + assert(built[2] != built[3]); + assert(built[3] != built[4]); } { @@ -152,12 +153,13 @@ void test_recursive() { Type temp3 = builder.getTempRefType(builder[3], Nullable); Type tuple0_2 = builder.getTempTupleType({temp0, temp2}); Type tuple1_3 = builder.getTempTupleType({temp1, temp3}); - builder[0] = Signature(Type::none, tuple0_2); - builder[1] = Signature(Type::none, tuple1_3); - builder[2] = Signature(); - builder[3] = Signature(); - builder[4] = Signature(Type::none, temp0); - builder[5] = Signature(Type::none, temp1); + builder[0] = Signature(); + builder[1] = Signature(); + builder.createRecGroup(2, 2); + builder[2] = Signature(Type::none, tuple0_2); + builder[3] = Signature(Type::none, tuple1_3); + builder[4] = Signature(Type::none, temp2); + builder[5] = Signature(Type::none, temp3); built = *builder.build(); } IndexedTypeNameGenerator print(built); @@ -168,13 +170,13 @@ void test_recursive() { std::cout << print(built[4]) << "\n"; std::cout << print(built[5]) << "\n\n"; assert(built[0] == built[1]); - assert(built[2] == built[3]); - assert(built[4] == built[5]); - assert(built[4].getSignature().results.getHeapType() == built[0]); - assert(built[5].getSignature().results.getHeapType() == built[1]); - assert(built[0].getSignature().results == + assert(built[2] != built[3]); + assert(built[4] != built[5]); + assert(built[4].getSignature().results.getHeapType() == built[2]); + assert(built[5].getSignature().results.getHeapType() == built[3]); + assert(built[2].getSignature().results == Type({Type(built[0], Nullable), Type(built[2], Nullable)})); - assert(built[1].getSignature().results == + assert(built[3].getSignature().results == Type({Type(built[1], Nullable), Type(built[3], Nullable)})); } @@ -193,7 +195,7 @@ void test_recursive() { std::cout << print(built[1]) << "\n\n"; assert(built[0].getSignature().results.getHeapType() == built[0]); assert(built[1].getSignature().results.getHeapType() == built[0]); - assert(built[0] == built[1]); + assert(built[0] != built[1]); } { @@ -201,202 +203,22 @@ void test_recursive() { std::vector<HeapType> built; { TypeBuilder builder(3); - Type temp0 = builder.getTempRefType(builder[0], Nullable); - Type anyref = builder.getTempRefType(builder[2], Nullable); - builder[0] = Signature(anyref, temp0); - builder[1] = Signature(anyref, temp0); - builder[2] = HeapType::any; + Type anyref = builder.getTempRefType(builder[0], Nullable); + Type temp1 = builder.getTempRefType(builder[1], Nullable); + builder[0] = HeapType::any; + builder[1] = Signature(anyref, temp1); + builder[2] = Signature(anyref, temp1); built = *builder.build(); } IndexedTypeNameGenerator print(built); std::cout << print(built[0]) << "\n"; std::cout << print(built[1]) << "\n\n"; - assert(built[0].getSignature().results.getHeapType() == built[0]); - assert(built[1].getSignature().results.getHeapType() == built[0]); - assert(built[0].getSignature().params == Type(HeapType::any, Nullable)); + assert(built[0] == HeapType::any); + assert(built[1].getSignature().results.getHeapType() == built[1]); + assert(built[2].getSignature().results.getHeapType() == built[1]); assert(built[1].getSignature().params == Type(HeapType::any, Nullable)); - assert(built[0] == built[1]); - assert(built[2] == HeapType::any); - } -} - -void test_lub() { - std::cout << ";; Test LUBs\n"; - - Type ext = Type(HeapType::ext, Nullable); - Type func = Type(HeapType::func, Nullable); - Type any = Type(HeapType::any, Nullable); - Type eq = Type(HeapType::eq, Nullable); - Type i31 = Type(HeapType::i31, Nullable); - Type data = Type(HeapType::data, Nullable); - - auto LUB = [&](Type a, Type b) { - Type lubAB = Type::getLeastUpperBound(a, b); - Type lubBA = Type::getLeastUpperBound(b, a); - assert(lubAB == lubBA); - if (lubAB == Type::none) { - assert(!Type::hasLeastUpperBound(a, b)); - assert(!Type::hasLeastUpperBound(b, a)); - } else { - assert(Type::hasLeastUpperBound(a, b)); - assert(Type::hasLeastUpperBound(b, a)); - assert(Type::isSubType(a, lubAB)); - assert(Type::isSubType(b, lubAB)); - } - return lubAB; - }; - - { - // Basic Types - for (auto other : {any, eq, i31, data}) { - assert(LUB(any, other) == any); - assert(LUB(func, other) == Type::none); - assert(LUB(ext, other) == Type::none); - } - assert(LUB(i31, data) == eq); - } - - { - // Nullable and non-nullable references - Type nullable(HeapType::any, Nullable); - Type nonNullable(HeapType::any, NonNullable); - assert(LUB(nullable, nullable) == nullable); - assert(LUB(nullable, nonNullable) == nullable); - assert(LUB(nonNullable, nonNullable) == nonNullable); - } - - { - // Funcref with specific signature - assert(LUB(func, Type(Signature(), Nullable)) == func); - } - - { - // Incompatible signatures - Type a(Signature(Type::none, any), Nullable); - Type b(Signature(any, Type::none), Nullable); - assert(LUB(a, b) == Type(HeapType::func, Nullable)); - } - - { - // Signatures incompatible in tuple size - Type a(Signature(Type::none, {any, any}), Nullable); - Type b(Signature(Type::none, {any, any, any}), Nullable); - assert(LUB(a, b) == Type(HeapType::func, Nullable)); - } - - // { - // // Covariance of function results - // Type a(Signature(Type::none, {Type::eqref, Type::funcref}), Nullable); - // Type b(Signature(Type::none, {Type::funcref, Type::eqref}), Nullable); - // assert(LUB(a, b) == Type(Signature(Type::none, {Type::anyref, - // Type::anyref}), Nullable)); - // } - - // TODO: Test contravariance in function parameters once that is supported. - - // { - // // Nested signatures - // Type baseA(Signature(Type::none, Type::eqref), Nullable); - // Type baseB(Signature(Type::none, Type::funcref), Nullable); - // Type a(Signature(Type::none, baseA), Nullable); - // Type b(Signature(Type::none, baseB), Nullable); - // Type baseLub(Signature(Type::none, Type::anyref), Nullable); - // Type lub(Signature(Type::none, baseLub), Nullable); - // assert(LUB(a, b) == lub); - // } - - // TODO: Test recursive signatures once signature subtyping is supported. - - { - // Mutable fields are invariant - Type a(Array(Field(eq, Mutable)), Nullable); - Type b(Array(Field(func, Mutable)), Nullable); - assert(LUB(a, b) == data); - } - - { - // Immutable fields are covariant - Type a(Array(Field(data, Immutable)), Nullable); - Type b(Array(Field(i31, Immutable)), Nullable); - Type lub(Array(Field(eq, Immutable)), Nullable); - assert(LUB(a, b) == lub); - } - - { - // Depth subtyping - Type a(Struct({Field(data, Immutable)}), Nullable); - Type b(Struct({Field(i31, Immutable)}), Nullable); - Type lub(Struct({Field(eq, Immutable)}), Nullable); - assert(LUB(a, b) == lub); - } - - { - // Width subtyping - Type a(Struct({Field(Type::i32, Immutable)}), Nullable); - Type b(Struct({Field(Type::i32, Immutable), Field(Type::i32, Immutable)}), - Nullable); - assert(LUB(a, b) == a); - } - - { - // Width subtyping with different suffixes - Type a(Struct({Field(Type::i32, Immutable), Field(Type::i64, Immutable)}), - Nullable); - Type b(Struct({Field(Type::i32, Immutable), Field(Type::f32, Immutable)}), - Nullable); - Type lub(Struct({Field(Type::i32, Immutable)}), Nullable); - assert(LUB(a, b) == lub); - } - - { - // Width and depth subtyping with different suffixes - Type a(Struct({Field(data, Immutable), Field(Type::i64, Immutable)}), - Nullable); - Type b(Struct({Field(i31, Immutable), Field(Type::f32, Immutable)}), - Nullable); - Type lub(Struct({Field(eq, Immutable)}), Nullable); - assert(LUB(a, b) == lub); - } - - { - // No common prefix - Type a(Struct({Field(Type::i32, Immutable), Field(any, Immutable)}), - Nullable); - Type b(Struct({Field(Type::f32, Immutable), Field(any, Immutable)}), - Nullable); - Type lub(Struct(), Nullable); - assert(LUB(a, b) == lub); - } - - { - // Nested structs - Type innerA(Struct({Field(data, Immutable)}), Nullable); - Type innerB(Struct({Field(i31, Immutable)}), Nullable); - Type innerLub(Struct({Field(eq, Immutable)}), Nullable); - Type a(Struct({Field(innerA, Immutable)}), Nullable); - Type b(Struct({Field(innerB, Immutable)}), Nullable); - Type lub(Struct({Field(innerLub, Immutable)}), Nullable); - assert(LUB(a, b) == lub); - } - - { - // Recursive structs - TypeBuilder builder(2); - Type tempA = builder.getTempRefType(builder[0], Nullable); - Type tempB = builder.getTempRefType(builder[1], Nullable); - builder[0] = Struct({Field(tempB, Immutable), Field(data, Immutable)}); - builder[1] = Struct({Field(tempA, Immutable), Field(i31, Immutable)}); - auto built = *builder.build(); - Type a(built[0], Nullable); - Type b(built[1], Nullable); - - TypeBuilder lubBuilder(1); - Type tempLub = builder.getTempRefType(lubBuilder[0], Nullable); - lubBuilder[0] = Struct({Field(tempLub, Immutable), Field(eq, Immutable)}); - built = *lubBuilder.build(); - Type lub(built[0], Nullable); - - assert(LUB(a, b) == lub); + assert(built[2].getSignature().params == Type(HeapType::any, Nullable)); + assert(built[1] != built[2]); } } @@ -407,6 +229,5 @@ int main() { test_canonicalization(); test_basic(); test_recursive(); - test_lub(); } } diff --git a/test/example/type-builder.txt b/test/example/type-builder.txt index 372e531a1..af40fd5de 100644 --- a/test/example/type-builder.txt +++ b/test/example/type-builder.txt @@ -1,56 +1,54 @@ ;; Test canonicalization ;; Test basic ;; Test recursive types -(func (result (ref null $0))) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $1)) func) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $1)) func) +(func_subtype (result (ref null $2)) func) +(func_subtype (result (ref null $3)) func) +(func_subtype (result (ref null $4)) func) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0) (ref null $2))) -(func (result (ref null $0) (ref null $2))) -(func) -(func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype func) +(func_subtype func) +(func_subtype (result (ref null $0) (ref null $2)) func) +(func_subtype (result (ref null $0) (ref null $3)) func) +(func_subtype (result (ref null $2)) func) +(func_subtype (result (ref null $3)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $0)) func) +(func_subtype (result (ref null $0)) func) -(func (param anyref) (result (ref null $0))) -(func (param anyref) (result (ref null $0))) +any +(func_subtype (param anyref) (result (ref null $1)) func) -;; Test LUBs ;; Test canonicalization ;; Test basic ;; Test recursive types -(func (result (ref null $0))) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $1)) func) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $1)) func) +(func_subtype (result (ref null $2)) func) +(func_subtype (result (ref null $3)) func) +(func_subtype (result (ref null $4)) func) +(func_subtype (result (ref null $0)) func) -(func (result (ref null $0) (ref null $2))) -(func (result (ref null $0) (ref null $2))) -(func) -(func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype func) +(func_subtype func) +(func_subtype (result (ref null $0) (ref null $2)) func) +(func_subtype (result (ref null $0) (ref null $3)) func) +(func_subtype (result (ref null $2)) func) +(func_subtype (result (ref null $3)) func) -(func (result (ref null $0))) -(func (result (ref null $0))) +(func_subtype (result (ref null $0)) func) +(func_subtype (result (ref null $0)) func) -(func (param anyref) (result (ref null $0))) -(func (param anyref) (result (ref null $0))) +any +(func_subtype (param anyref) (result (ref null $1)) func) -;; Test LUBs diff --git a/test/example/typeinfo.txt b/test/example/typeinfo.txt index 7015e6cfc..67f9766d0 100644 --- a/test/example/typeinfo.txt +++ b/test/example/typeinfo.txt @@ -11,31 +11,31 @@ eqref i31 i31ref (ref i31) -(func) -(struct) -(array i32) +(func_subtype func) +(struct_subtype data) +(array_subtype i32 data) ;; Signature -(func) +(func_subtype func) (ref $func.0) (ref null $func.0) -(func (param i32) (result f64)) +(func_subtype (param i32) (result f64) func) (ref $func.0) (ref null $func.0) ;; Struct -(struct) +(struct_subtype data) (ref $struct.0) (ref null $struct.0) -(struct (field i32 i64 (mut f32) (mut f64))) +(struct_subtype (field i32 i64 (mut f32) (mut f64)) data) (ref $struct.0) (ref null $struct.0) ;; Array -(array i32) +(array_subtype i32 data) (ref $array.0) (ref null $array.0) -(array (mut i64)) +(array_subtype (mut i64) data) (ref $array.0) (ref null $array.0) @@ -46,33 +46,33 @@ none (i32 f64) ;; Signature of references (param/result) -(func (param (ref null $struct.0)) (result (ref $array.0))) +(func_subtype (param (ref null $struct.0)) (result (ref $array.0)) func) ;; Signature of references (params/results) -(func (param (ref null $struct.0) (ref $array.0)) (result (ref $struct.0) (ref null $array.1))) +(func_subtype (param (ref null $struct.0) (ref $array.0)) (result (ref $struct.0) (ref null $array.1)) func) ;; Struct of references -(struct (field (ref $func.0) (mut (ref $func.0)) (ref null $func.0) (mut (ref null $func.0)))) +(struct_subtype (field (ref $func.0) (mut (ref $func.0)) (ref null $func.0) (mut (ref null $func.0))) data) (ref $struct.0) (ref null $struct.0) -(struct (field (ref $struct.0) (mut (ref $struct.0)) (ref null $struct.0) (mut (ref null $struct.0)))) +(struct_subtype (field (ref $struct.0) (mut (ref $struct.0)) (ref null $struct.0) (mut (ref null $struct.0))) data) (ref $struct.0) (ref null $struct.0) -(struct (field (ref $array.0) (mut (ref $array.0)) (ref null $array.0) (mut (ref null $array.0)))) +(struct_subtype (field (ref $array.0) (mut (ref $array.0)) (ref null $array.0) (mut (ref null $array.0))) data) (ref $struct.0) (ref null $struct.0) -(struct (field (mut i32) (mut (ref null $func.0)) (mut (ref null $struct.0)) (mut (ref null $array.0)))) +(struct_subtype (field (mut i32) (mut (ref null $func.0)) (mut (ref null $struct.0)) (mut (ref null $array.0))) data) (ref $struct.0) (ref null $struct.0) ;; Array of references -(array (ref null $func.0)) +(array_subtype (ref null $func.0) data) (ref $array.0) (ref null $array.0) -(array (mut (ref null $struct.0))) +(array_subtype (mut (ref null $struct.0)) data) (ref $array.0) (ref null $array.0) -(array (ref null $array.0)) +(array_subtype (ref null $array.0) data) (ref $array.0) (ref null $array.0) @@ -81,7 +81,7 @@ none ((ref $func.0) (ref null $func.0) (ref $struct.0) (ref null $struct.0) (ref $array.0) (ref null $array.0)) ;; Recursive (not really) -(func (param (ref $func.0))) +(func_subtype (param (ref $func.0)) func) (ref $func.0) -(func (param (ref $array.0))) +(func_subtype (param (ref $array.0)) func) (ref $func.0) diff --git a/test/exception-handling.wast.from-wast b/test/exception-handling.wast.from-wast index b5926ca09..bca0c39b8 100644 --- a/test/exception-handling.wast.from-wast +++ b/test/exception-handling.wast.from-wast @@ -9,13 +9,13 @@ (tag $e-i32-i64 (param i32 i64)) (tag $e-eqref (param eqref)) (tag $e-empty (param)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $eh-test + (func $eh-test (type $none_=>_none) (local $x (i32 i64)) (try $try (do @@ -180,7 +180,7 @@ ) ) ) - (func $delegate-test + (func $delegate-test (type $none_=>_none) (try $l0 (do (try $try @@ -245,7 +245,7 @@ ) ) ) - (func $rethrow-test + (func $rethrow-test (type $none_=>_none) (try $l0 (do (call $foo) @@ -353,7 +353,7 @@ ) ) ) - (func $pop-test + (func $pop-test (type $none_=>_none) (try $try (do (nop) @@ -379,7 +379,7 @@ ) ) ) - (func $catchless-try-with-inner-delegate + (func $catchless-try-with-inner-delegate (type $none_=>_none) (try $label$0 (do (try $try @@ -393,7 +393,7 @@ ) ) ) - (func $nested-block-and-try + (func $nested-block-and-try (type $none_=>_none) (block $l0 (block $l1 ) diff --git a/test/exception-handling.wast.fromBinary b/test/exception-handling.wast.fromBinary index 73a4ae975..67efd13d1 100644 --- a/test/exception-handling.wast.fromBinary +++ b/test/exception-handling.wast.fromBinary @@ -9,13 +9,13 @@ (tag $e-i32-i64 (param i32 i64)) (tag $e-eqref (param eqref)) (tag $e-empty (param)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $bar + (func $bar (type $none_=>_none) (nop) ) - (func $eh-test + (func $eh-test (type $none_=>_none) (local $x i32) (local $1 i64) (local $2 (i32 i64)) @@ -205,7 +205,7 @@ ) ) ) - (func $delegate-test + (func $delegate-test (type $none_=>_none) (try $label$9 (do (block $label$1 @@ -276,7 +276,7 @@ ) ) ) - (func $rethrow-test + (func $rethrow-test (type $none_=>_none) (try $label$3 (do (call $foo) @@ -382,7 +382,7 @@ ) ) ) - (func $pop-test + (func $pop-test (type $none_=>_none) (try $label$5 (do (nop) @@ -408,7 +408,7 @@ ) ) ) - (func $catchless-try-with-inner-delegate + (func $catchless-try-with-inner-delegate (type $none_=>_none) (try $label$6 (do (block $label$1 @@ -424,7 +424,7 @@ ) ) ) - (func $nested-block-and-try + (func $nested-block-and-try (type $none_=>_none) (block $label$1 (block $label$2 ) diff --git a/test/exception-handling.wast.fromBinary.noDebugInfo b/test/exception-handling.wast.fromBinary.noDebugInfo index c3f2a8307..eeeeea94e 100644 --- a/test/exception-handling.wast.fromBinary.noDebugInfo +++ b/test/exception-handling.wast.fromBinary.noDebugInfo @@ -9,13 +9,13 @@ (tag $tag$2 (param i32 i64)) (tag $tag$3 (param eqref)) (tag $tag$4 (param)) - (func $0 + (func $0 (type $none_=>_none) (nop) ) - (func $1 + (func $1 (type $none_=>_none) (nop) ) - (func $2 + (func $2 (type $none_=>_none) (local $0 i32) (local $1 i64) (local $2 (i32 i64)) @@ -205,7 +205,7 @@ ) ) ) - (func $3 + (func $3 (type $none_=>_none) (try $label$9 (do (block $label$1 @@ -276,7 +276,7 @@ ) ) ) - (func $4 + (func $4 (type $none_=>_none) (try $label$3 (do (call $0) @@ -382,7 +382,7 @@ ) ) ) - (func $5 + (func $5 (type $none_=>_none) (try $label$5 (do (nop) @@ -408,7 +408,7 @@ ) ) ) - (func $6 + (func $6 (type $none_=>_none) (try $label$6 (do (block $label$1 @@ -424,7 +424,7 @@ ) ) ) - (func $7 + (func $7 (type $none_=>_none) (block $label$1 (block $label$2 ) diff --git a/test/fn_prolog_epilog.debugInfo.wast.from-wast b/test/fn_prolog_epilog.debugInfo.wast.from-wast index f9556f807..a7492d65a 100644 --- a/test/fn_prolog_epilog.debugInfo.wast.from-wast +++ b/test/fn_prolog_epilog.debugInfo.wast.from-wast @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) ;;@ src.cpp:1:1 - (func $0 + (func $0 (type $none_=>_none) (nop) ;;@ src.cpp:2:1 (block $l0 diff --git a/test/fn_prolog_epilog.debugInfo.wast.fromBinary b/test/fn_prolog_epilog.debugInfo.wast.fromBinary index 75c4e9c66..02c7a5069 100644 --- a/test/fn_prolog_epilog.debugInfo.wast.fromBinary +++ b/test/fn_prolog_epilog.debugInfo.wast.fromBinary @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 + (func $0 (type $none_=>_none) (nop) (block $label$1 (block $label$2 diff --git a/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo b/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo index 75c4e9c66..02c7a5069 100644 --- a/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo +++ b/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 + (func $0 (type $none_=>_none) (nop) (block $label$1 (block $label$2 diff --git a/test/gc.wast.from-wast b/test/gc.wast.from-wast index a518ceffa..9c2386d7d 100644 --- a/test/gc.wast.from-wast +++ b/test/gc.wast.from-wast @@ -13,7 +13,7 @@ (global $global_eqref2 (mut eqref) (i31.new (i32.const 0) )) - (func $test (param $local_i31ref i31ref) (param $local_dataref dataref) + (func $test (type $i31ref_dataref_=>_none) (param $local_i31ref i31ref) (param $local_dataref dataref) (local $local_i32 i32) (local $local_anyref anyref) (local $local_eqref eqref) @@ -148,7 +148,7 @@ ) ) ) - (func $test-variants (param $local_i31refnull i31ref) (param $local_i31refnonnull (ref i31)) (param $local_datarefnull dataref) (param $local_datarefnonnull (ref data)) + (func $test-variants (type $i31ref_ref|i31|_dataref_ref|data|_=>_none) (param $local_i31refnull i31ref) (param $local_i31refnonnull (ref i31)) (param $local_datarefnull dataref) (param $local_datarefnonnull (ref data)) (nop) ) ) diff --git a/test/gc.wast.fromBinary b/test/gc.wast.fromBinary index 72c1508e7..e56215a8a 100644 --- a/test/gc.wast.fromBinary +++ b/test/gc.wast.fromBinary @@ -13,7 +13,7 @@ (global $global_eqref2 (mut eqref) (i31.new (i32.const 0) )) - (func $test (param $local_i31ref i31ref) (param $local_dataref dataref) + (func $test (type $i31ref_dataref_=>_none) (param $local_i31ref i31ref) (param $local_dataref dataref) (local $local_i32 i32) (local $local_anyref anyref) (local $local_eqref eqref) @@ -148,7 +148,7 @@ ) ) ) - (func $test-variants (param $local_i31refnull i31ref) (param $local_i31refnonnull (ref i31)) (param $local_datarefnull dataref) (param $local_datarefnonnull (ref data)) + (func $test-variants (type $i31ref_ref|i31|_dataref_ref|data|_=>_none) (param $local_i31refnull i31ref) (param $local_i31refnonnull (ref i31)) (param $local_datarefnull dataref) (param $local_datarefnonnull (ref data)) (nop) ) ) diff --git a/test/gc.wast.fromBinary.noDebugInfo b/test/gc.wast.fromBinary.noDebugInfo index 614376881..e51c6c4c1 100644 --- a/test/gc.wast.fromBinary.noDebugInfo +++ b/test/gc.wast.fromBinary.noDebugInfo @@ -13,7 +13,7 @@ (global $global$5 (mut eqref) (i31.new (i32.const 0) )) - (func $0 (param $0 i31ref) (param $1 dataref) + (func $0 (type $i31ref_dataref_=>_none) (param $0 i31ref) (param $1 dataref) (local $2 i32) (local $3 anyref) (local $4 eqref) @@ -148,7 +148,7 @@ ) ) ) - (func $1 (param $0 i31ref) (param $1 (ref i31)) (param $2 dataref) (param $3 (ref data)) + (func $1 (type $i31ref_ref|i31|_dataref_ref|data|_=>_none) (param $0 i31ref) (param $1 (ref i31)) (param $2 dataref) (param $3 (ref data)) (nop) ) ) diff --git a/test/grow_memory.wast.from-wast b/test/grow_memory.wast.from-wast index 35cf39f02..9994eb61d 100644 --- a/test/grow_memory.wast.from-wast +++ b/test/grow_memory.wast.from-wast @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (param $var$0 i32) (result i32) + (func $0 (type $0) (param $var$0 i32) (result i32) (memory.grow (local.get $var$0) ) ) - (func $1 (result i32) + (func $1 (type $1) (result i32) (memory.size) ) ) diff --git a/test/grow_memory.wast.fromBinary b/test/grow_memory.wast.fromBinary index cf616556b..ea4be8816 100644 --- a/test/grow_memory.wast.fromBinary +++ b/test/grow_memory.wast.fromBinary @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (param $var$0 i32) (result i32) + (func $0 (type $0) (param $var$0 i32) (result i32) (memory.grow (local.get $var$0) ) ) - (func $1 (result i32) + (func $1 (type $1) (result i32) (memory.size) ) ) diff --git a/test/grow_memory.wast.fromBinary.noDebugInfo b/test/grow_memory.wast.fromBinary.noDebugInfo index 1f1addc33..109d90ffa 100644 --- a/test/grow_memory.wast.fromBinary.noDebugInfo +++ b/test/grow_memory.wast.fromBinary.noDebugInfo @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (param $0 i32) (result i32) + (func $0 (type $i32_=>_i32) (param $0 i32) (result i32) (memory.grow (local.get $0) ) ) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (memory.size) ) ) diff --git a/test/gtest/type-builder.cpp b/test/gtest/type-builder.cpp index 8ba2a39d1..fcf0e1a5a 100644 --- a/test/gtest/type-builder.cpp +++ b/test/gtest/type-builder.cpp @@ -499,7 +499,7 @@ TEST_F(IsorecursiveTest, CanonicalizeBasicTypes) { testCanonicalizeBasicTypes(); } -TEST_F(IsorecursiveTest, TestBasicTypeRelations) { +TEST_F(IsorecursiveTest, TestHeapTypeRelations) { HeapType ext = HeapType::ext; HeapType func = HeapType::func; HeapType any = HeapType::any; @@ -715,6 +715,127 @@ TEST_F(IsorecursiveTest, TestBasicTypeRelations) { assertLUB(defStruct, defArray, data); assertLUB(defArray, defArray, defArray); + + Type anyref = Type(any, Nullable); + Type eqref = Type(eq, Nullable); + + { + // Nullable and non-nullable references. + Type nonNullable(any, NonNullable); + EXPECT_TRUE(Type::isSubType(nonNullable, anyref)); + EXPECT_FALSE(Type::isSubType(anyref, nonNullable)); + EXPECT_TRUE(Type::hasLeastUpperBound(anyref, nonNullable)); + EXPECT_EQ(Type::getLeastUpperBound(anyref, nonNullable), anyref); + } + + { + // Immutable array fields are covariant. + TypeBuilder builder(2); + builder[0] = Array(Field(anyref, Immutable)); + builder[1] = Array(Field(eqref, Immutable)); + builder[1].subTypeOf(builder[0]); + auto results = builder.build(); + ASSERT_TRUE(results); + auto built = *results; + EXPECT_TRUE(HeapType::isSubType(built[1], built[0])); + } + + { + // Depth subtyping + TypeBuilder builder(2); + builder[0] = Struct({Field(anyref, Immutable)}); + builder[1] = Struct({Field(eqref, Immutable)}); + builder[1].subTypeOf(builder[0]); + auto results = builder.build(); + ASSERT_TRUE(results); + auto built = *results; + EXPECT_TRUE(HeapType::isSubType(built[1], built[0])); + } + + { + // Width subtyping + TypeBuilder builder(2); + builder[0] = Struct({Field(anyref, Immutable)}); + builder[1] = Struct({Field(anyref, Immutable), Field(anyref, Immutable)}); + builder[1].subTypeOf(builder[0]); + auto results = builder.build(); + ASSERT_TRUE(results); + auto built = *results; + EXPECT_TRUE(HeapType::isSubType(built[1], built[0])); + } + + { + // Nested structs + TypeBuilder builder(4); + auto ref0 = builder.getTempRefType(builder[0], Nullable); + auto ref1 = builder.getTempRefType(builder[1], Nullable); + builder[0] = Struct({Field(anyref, Immutable)}); + builder[1] = Struct({Field(eqref, Immutable)}); + builder[2] = Struct({Field(ref0, Immutable)}); + builder[3] = Struct({Field(ref1, Immutable)}); + builder[1].subTypeOf(builder[0]); + builder[3].subTypeOf(builder[2]); + auto results = builder.build(); + ASSERT_TRUE(results); + auto built = *results; + EXPECT_TRUE(HeapType::isSubType(built[3], built[2])); + } + + { + // Recursive structs + TypeBuilder builder(2); + auto ref0 = builder.getTempRefType(builder[0], Nullable); + auto ref1 = builder.getTempRefType(builder[1], Nullable); + builder[0] = Struct({Field(ref0, Immutable)}); + builder[1] = Struct({Field(ref1, Immutable)}); + builder[1].subTypeOf(builder[0]); + auto results = builder.build(); + ASSERT_TRUE(results); + auto built = *results; + EXPECT_TRUE(HeapType::isSubType(built[1], built[0])); + } +} + +TEST_F(IsorecursiveTest, TestSubtypeErrors) { + Type anyref = Type(HeapType::any, Nullable); + Type eqref = Type(HeapType::eq, Nullable); + Type funcref = Type(HeapType::func, Nullable); + + { + // Incompatible signatures. + TypeBuilder builder(2); + builder[0] = Signature(Type::none, anyref); + builder[1] = Signature(anyref, Type::none); + builder[1].subTypeOf(builder[0]); + EXPECT_FALSE(builder.build()); + } + + { + // Signatures incompatible in tuple size. + TypeBuilder builder(2); + builder[0] = Signature(Type::none, {anyref, anyref}); + builder[1] = Signature(Type::none, {anyref, anyref, anyref}); + builder[1].subTypeOf(builder[0]); + EXPECT_FALSE(builder.build()); + } + + { + // Mutable array fields are invariant. + TypeBuilder builder(2); + builder[0] = Array(Field(anyref, Mutable)); + builder[1] = Array(Field(eqref, Mutable)); + builder[1].subTypeOf(builder[0]); + EXPECT_FALSE(builder.build()); + } + + { + // Incompatible struct prefixes + TypeBuilder builder(2); + builder[0] = Struct({Field(anyref, Immutable), Field(anyref, Immutable)}); + builder[1] = Struct({Field(funcref, Immutable), Field(anyref, Immutable)}); + builder[1].subTypeOf(builder[0]); + EXPECT_FALSE(builder.build()); + } } // Test SubTypes utility code. diff --git a/test/heap-types.wast b/test/heap-types.wast index 35e866e9b..b8093312e 100644 --- a/test/heap-types.wast +++ b/test/heap-types.wast @@ -30,8 +30,8 @@ (type $words (array (mut i32))) (type $parent (struct)) - (type $child (struct i32)) - (type $grandchild (struct i32 i64)) + (type $child (struct_subtype i32 $parent)) + (type $grandchild (struct_subtype i32 i64 $child)) (type $nested-child-struct (struct (field (mut (ref $child))))) (type $nested-child-array (array (mut (ref $child)))) diff --git a/test/heap-types.wast.from-wast b/test/heap-types.wast.from-wast index dc41451cd..e9fe8b938 100644 --- a/test/heap-types.wast.from-wast +++ b/test/heap-types.wast.from-wast @@ -6,13 +6,14 @@ (type $struct.C (struct (field $named-mut (mut f32)))) (type $matrix (array (mut (ref null $vector)))) (type $bytes (array (mut i8))) - (type $grandchild (struct (field i32) (field i64))) + (type $parent (struct )) + (type $child (struct_subtype (field i32) $parent)) + (type $grandchild (struct_subtype (field i32) (field i64) $child)) (type $anyref_=>_none (func (param anyref))) (type $ref?|$vector|_=>_none (func (param (ref null $vector)))) (type $nested-child-struct (struct (field (mut (ref $child))))) (type $words (array (mut i32))) (type $nested-child-array (array (mut (ref $child)))) - (type $child (struct (field i32))) (type $ref|$struct.A|_ref?|$struct.A|_ref?|$grandchild|_ref?|$struct.C|_ref?|$nested-child-struct|_=>_ref|$struct.B| (func (param (ref $struct.A) (ref null $struct.A) (ref null $grandchild) (ref null $struct.C) (ref null $nested-child-struct)) (result (ref $struct.B)))) (type $ref|$vector|_ref?|$nested-child-array|_ref?|$grandchild|_=>_ref|$matrix| (func (param (ref $vector) (ref null $nested-child-array) (ref null $grandchild)) (result (ref $matrix)))) (type $ref?|$struct.C|_=>_none (func (param (ref null $struct.C)))) @@ -20,7 +21,7 @@ (type $none_=>_ref|$vector| (func (result (ref $vector)))) (type $none_=>_ref|$bytes| (func (result (ref $bytes)))) (global $struct.new-in-global (ref $struct.A) (struct.new_default $struct.A)) - (func $structs (param $x (ref $struct.A)) (param $struct.A.prime (ref null $struct.A)) (param $grandchild (ref null $grandchild)) (param $struct.C (ref null $struct.C)) (param $nested-child-struct (ref null $nested-child-struct)) (result (ref $struct.B)) + (func $structs (type $ref|$struct.A|_ref?|$struct.A|_ref?|$grandchild|_ref?|$struct.C|_ref?|$nested-child-struct|_=>_ref|$struct.B|) (param $x (ref $struct.A)) (param $struct.A.prime (ref null $struct.A)) (param $grandchild (ref null $grandchild)) (param $struct.C (ref null $struct.C)) (param $nested-child-struct (ref null $nested-child-struct)) (result (ref $struct.B)) (local $tA (ref null $struct.A)) (local $tB (ref null $struct.B)) (local $tc (ref null $struct.C)) @@ -115,7 +116,7 @@ ) (unreachable) ) - (func $arrays (param $x (ref $vector)) (param $nested-child-array (ref null $nested-child-array)) (param $grandchild (ref null $grandchild)) (result (ref $matrix)) + (func $arrays (type $ref|$vector|_ref?|$nested-child-array|_ref?|$grandchild|_=>_ref|$matrix|) (param $x (ref $vector)) (param $nested-child-array (ref null $nested-child-array)) (param $grandchild (ref null $grandchild)) (result (ref $matrix)) (local $tv (ref null $vector)) (local $tm (ref null $matrix)) (local $tb (ref null $bytes)) @@ -174,7 +175,7 @@ ) (unreachable) ) - (func $ref.is_X (param $x anyref) + (func $ref.is_X (type $anyref_=>_none) (param $x anyref) (if (ref.is_func (local.get $x) @@ -194,7 +195,7 @@ (unreachable) ) ) - (func $ref.as_X (param $x anyref) + (func $ref.as_X (type $anyref_=>_none) (param $x anyref) (drop (ref.as_non_null (local.get $x) @@ -216,7 +217,7 @@ ) ) ) - (func $br_on_X (param $x anyref) + (func $br_on_X (type $anyref_=>_none) (param $x anyref) (local $y anyref) (local $z anyref) (local $temp-func funcref) @@ -298,7 +299,7 @@ ) ) ) - (func $unreachables-1 + (func $unreachables-1 (type $none_=>_none) (drop (block ;; (replaces something unreachable we can't emit) (drop @@ -308,13 +309,13 @@ ) ) ) - (func $unreachables-2 (param $struct.C (ref null $struct.C)) + (func $unreachables-2 (type $ref?|$struct.C|_=>_none) (param $struct.C (ref null $struct.C)) (struct.set $struct.C $named-mut (local.get $struct.C) (unreachable) ) ) - (func $unreachables-3 + (func $unreachables-3 (type $none_=>_none) (block ;; (replaces something unreachable we can't emit) (drop (unreachable) @@ -325,7 +326,7 @@ (unreachable) ) ) - (func $unreachables-4 + (func $unreachables-4 (type $none_=>_none) (block ;; (replaces something unreachable we can't emit) (drop (unreachable) @@ -336,7 +337,7 @@ (unreachable) ) ) - (func $unreachables-array-1 + (func $unreachables-array-1 (type $none_=>_none) (block ;; (replaces something unreachable we can't emit) (drop (unreachable) @@ -347,13 +348,13 @@ (unreachable) ) ) - (func $unreachables-array-2 (param $vector (ref null $vector)) + (func $unreachables-array-2 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (array.get $vector (local.get $vector) (unreachable) ) ) - (func $unreachables-array-3 + (func $unreachables-array-3 (type $none_=>_none) (block ;; (replaces something unreachable we can't emit) (drop (unreachable) @@ -367,28 +368,28 @@ (unreachable) ) ) - (func $unreachables-array-4 (param $vector (ref null $vector)) + (func $unreachables-array-4 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (array.set $vector (local.get $vector) (unreachable) (f64.const 2.18281828) ) ) - (func $unreachables-array-5 (param $vector (ref null $vector)) + (func $unreachables-array-5 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (array.set $vector (local.get $vector) (i32.const 2) (unreachable) ) ) - (func $unreachables-array-6 + (func $unreachables-array-6 (type $none_=>_none) (drop (array.len (unreachable) ) ) ) - (func $array-copy (param $x (ref $vector)) (param $y (ref null $vector)) + (func $array-copy (type $ref|$vector|_ref?|$vector|_=>_none) (param $x (ref $vector)) (param $y (ref null $vector)) (array.copy $vector $vector (local.get $x) (i32.const 11) @@ -397,7 +398,7 @@ (i32.const 1337) ) ) - (func $array-init (result (ref $vector)) + (func $array-init (type $none_=>_ref|$vector|) (result (ref $vector)) (array.init_static $vector (f64.const 1) (f64.const 2) @@ -405,14 +406,14 @@ (f64.const 8) ) ) - (func $array-init-packed (result (ref $bytes)) + (func $array-init-packed (type $none_=>_ref|$bytes|) (result (ref $bytes)) (array.init_static $bytes (i32.const 4) (i32.const 2) (i32.const 1) ) ) - (func $static-operations + (func $static-operations (type $none_=>_none) (local $temp.A (ref null $struct.A)) (local $temp.B (ref null $struct.B)) (drop diff --git a/test/heap-types.wast.fromBinary b/test/heap-types.wast.fromBinary index f16e07c7f..fd2dbeed6 100644 --- a/test/heap-types.wast.fromBinary +++ b/test/heap-types.wast.fromBinary @@ -6,13 +6,14 @@ (type $matrix (array (mut (ref null $vector)))) (type $bytes (array (mut i8))) (type $struct.C (struct (field $named-mut (mut f32)))) - (type $grandchild (struct (field i32) (field i64))) + (type $parent (struct )) + (type $child (struct_subtype (field i32) $parent)) + (type $grandchild (struct_subtype (field i32) (field i64) $child)) (type $anyref_=>_none (func (param anyref))) (type $ref?|$vector|_=>_none (func (param (ref null $vector)))) (type $nested-child-struct (struct (field (mut (ref $child))))) (type $words (array (mut i32))) (type $nested-child-array (array (mut (ref $child)))) - (type $child (struct (field i32))) (type $ref|$struct.A|_ref?|$struct.A|_ref?|$grandchild|_ref?|$struct.C|_ref?|$nested-child-struct|_=>_ref|$struct.B| (func (param (ref $struct.A) (ref null $struct.A) (ref null $grandchild) (ref null $struct.C) (ref null $nested-child-struct)) (result (ref $struct.B)))) (type $ref|$vector|_ref?|$nested-child-array|_ref?|$grandchild|_=>_ref|$matrix| (func (param (ref $vector) (ref null $nested-child-array) (ref null $grandchild)) (result (ref $matrix)))) (type $ref?|$struct.C|_=>_none (func (param (ref null $struct.C)))) @@ -20,7 +21,7 @@ (type $none_=>_ref|$vector| (func (result (ref $vector)))) (type $none_=>_ref|$bytes| (func (result (ref $bytes)))) (global $struct.new-in-global (ref $struct.A) (struct.new_default $struct.A)) - (func $structs (param $x (ref $struct.A)) (param $struct.A.prime (ref null $struct.A)) (param $grandchild (ref null $grandchild)) (param $struct.C (ref null $struct.C)) (param $nested-child-struct (ref null $nested-child-struct)) (result (ref $struct.B)) + (func $structs (type $ref|$struct.A|_ref?|$struct.A|_ref?|$grandchild|_ref?|$struct.C|_ref?|$nested-child-struct|_=>_ref|$struct.B|) (param $x (ref $struct.A)) (param $struct.A.prime (ref null $struct.A)) (param $grandchild (ref null $grandchild)) (param $struct.C (ref null $struct.C)) (param $nested-child-struct (ref null $nested-child-struct)) (result (ref $struct.B)) (local $tA (ref null $struct.A)) (local $tB (ref null $struct.B)) (local $tc (ref null $struct.C)) @@ -113,7 +114,7 @@ ) (unreachable) ) - (func $arrays (param $x (ref $vector)) (param $nested-child-array (ref null $nested-child-array)) (param $grandchild (ref null $grandchild)) (result (ref $matrix)) + (func $arrays (type $ref|$vector|_ref?|$nested-child-array|_ref?|$grandchild|_=>_ref|$matrix|) (param $x (ref $vector)) (param $nested-child-array (ref null $nested-child-array)) (param $grandchild (ref null $grandchild)) (result (ref $matrix)) (local $tv (ref null $vector)) (local $tm (ref null $matrix)) (local $tb (ref null $bytes)) @@ -172,7 +173,7 @@ ) (unreachable) ) - (func $ref.is_X (param $x anyref) + (func $ref.is_X (type $anyref_=>_none) (param $x anyref) (if (ref.is_func (local.get $x) @@ -192,7 +193,7 @@ (unreachable) ) ) - (func $ref.as_X (param $x anyref) + (func $ref.as_X (type $anyref_=>_none) (param $x anyref) (drop (ref.as_non_null (local.get $x) @@ -214,7 +215,7 @@ ) ) ) - (func $br_on_X (param $x anyref) + (func $br_on_X (type $anyref_=>_none) (param $x anyref) (local $y anyref) (local $z anyref) (local $temp-func funcref) @@ -296,40 +297,40 @@ ) ) ) - (func $unreachables-1 + (func $unreachables-1 (type $none_=>_none) (unreachable) ) - (func $unreachables-2 (param $struct.C (ref null $struct.C)) + (func $unreachables-2 (type $ref?|$struct.C|_=>_none) (param $struct.C (ref null $struct.C)) (drop (local.get $struct.C) ) (unreachable) ) - (func $unreachables-3 + (func $unreachables-3 (type $none_=>_none) (unreachable) ) - (func $unreachables-4 + (func $unreachables-4 (type $none_=>_none) (unreachable) ) - (func $unreachables-array-1 + (func $unreachables-array-1 (type $none_=>_none) (unreachable) ) - (func $unreachables-array-2 (param $vector (ref null $vector)) + (func $unreachables-array-2 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (drop (local.get $vector) ) (unreachable) ) - (func $unreachables-array-3 + (func $unreachables-array-3 (type $none_=>_none) (unreachable) ) - (func $unreachables-array-4 (param $vector (ref null $vector)) + (func $unreachables-array-4 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (drop (local.get $vector) ) (unreachable) ) - (func $unreachables-array-5 (param $vector (ref null $vector)) + (func $unreachables-array-5 (type $ref?|$vector|_=>_none) (param $vector (ref null $vector)) (drop (local.get $vector) ) @@ -338,10 +339,10 @@ ) (unreachable) ) - (func $unreachables-array-6 + (func $unreachables-array-6 (type $none_=>_none) (unreachable) ) - (func $array-copy (param $x (ref $vector)) (param $y (ref null $vector)) + (func $array-copy (type $ref|$vector|_ref?|$vector|_=>_none) (param $x (ref $vector)) (param $y (ref null $vector)) (array.copy $vector $vector (local.get $x) (i32.const 11) @@ -350,7 +351,7 @@ (i32.const 1337) ) ) - (func $array-init (result (ref $vector)) + (func $array-init (type $none_=>_ref|$vector|) (result (ref $vector)) (array.init_static $vector (f64.const 1) (f64.const 2) @@ -358,14 +359,14 @@ (f64.const 8) ) ) - (func $array-init-packed (result (ref $bytes)) + (func $array-init-packed (type $none_=>_ref|$bytes|) (result (ref $bytes)) (array.init_static $bytes (i32.const 4) (i32.const 2) (i32.const 1) ) ) - (func $static-operations + (func $static-operations (type $none_=>_none) (local $temp.A (ref null $struct.A)) (local $temp.B (ref null $struct.B)) (drop diff --git a/test/heap-types.wast.fromBinary.noDebugInfo b/test/heap-types.wast.fromBinary.noDebugInfo index 53c3b0bd6..e1b90ef4c 100644 --- a/test/heap-types.wast.fromBinary.noDebugInfo +++ b/test/heap-types.wast.fromBinary.noDebugInfo @@ -6,13 +6,14 @@ (type $[mut:ref?|[mut:f64]|] (array (mut (ref null $[mut:f64])))) (type $[mut:i8] (array (mut i8))) (type ${mut:f32} (struct (field (mut f32)))) - (type ${i32_i64} (struct (field i32) (field i64))) + (type ${} (struct )) + (type ${i32} (struct_subtype (field i32) ${})) + (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) (type $anyref_=>_none (func (param anyref))) (type $ref?|[mut:f64]|_=>_none (func (param (ref null $[mut:f64])))) (type ${mut:ref|{i32}|} (struct (field (mut (ref ${i32}))))) (type $[mut:i32] (array (mut i32))) (type $[mut:ref|{i32}|] (array (mut (ref ${i32})))) - (type ${i32} (struct (field i32))) (type $ref|{i32_f32_f64}|_ref?|{i32_f32_f64}|_ref?|{i32_i64}|_ref?|{mut:f32}|_ref?|{mut:ref|{i32}|}|_=>_ref|{i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|}| (func (param (ref ${i32_f32_f64}) (ref null ${i32_f32_f64}) (ref null ${i32_i64}) (ref null ${mut:f32}) (ref null ${mut:ref|{i32}|})) (result (ref ${i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|})))) (type $ref|[mut:f64]|_ref?|[mut:ref|{i32}|]|_ref?|{i32_i64}|_=>_ref|[mut:ref?|[mut:f64]|]| (func (param (ref $[mut:f64]) (ref null $[mut:ref|{i32}|]) (ref null ${i32_i64})) (result (ref $[mut:ref?|[mut:f64]|])))) (type $ref?|{mut:f32}|_=>_none (func (param (ref null ${mut:f32})))) @@ -20,7 +21,7 @@ (type $none_=>_ref|[mut:f64]| (func (result (ref $[mut:f64])))) (type $none_=>_ref|[mut:i8]| (func (result (ref $[mut:i8])))) (global $global$0 (ref ${i32_f32_f64}) (struct.new_default ${i32_f32_f64})) - (func $0 (param $0 (ref ${i32_f32_f64})) (param $1 (ref null ${i32_f32_f64})) (param $2 (ref null ${i32_i64})) (param $3 (ref null ${mut:f32})) (param $4 (ref null ${mut:ref|{i32}|})) (result (ref ${i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|})) + (func $0 (type $ref|{i32_f32_f64}|_ref?|{i32_f32_f64}|_ref?|{i32_i64}|_ref?|{mut:f32}|_ref?|{mut:ref|{i32}|}|_=>_ref|{i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|}|) (param $0 (ref ${i32_f32_f64})) (param $1 (ref null ${i32_f32_f64})) (param $2 (ref null ${i32_i64})) (param $3 (ref null ${mut:f32})) (param $4 (ref null ${mut:ref|{i32}|})) (result (ref ${i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|})) (local $5 (ref null ${i32_f32_f64})) (local $6 (ref null ${i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|})) (local $7 (ref null ${mut:f32})) @@ -113,7 +114,7 @@ ) (unreachable) ) - (func $1 (param $0 (ref $[mut:f64])) (param $1 (ref null $[mut:ref|{i32}|])) (param $2 (ref null ${i32_i64})) (result (ref $[mut:ref?|[mut:f64]|])) + (func $1 (type $ref|[mut:f64]|_ref?|[mut:ref|{i32}|]|_ref?|{i32_i64}|_=>_ref|[mut:ref?|[mut:f64]|]|) (param $0 (ref $[mut:f64])) (param $1 (ref null $[mut:ref|{i32}|])) (param $2 (ref null ${i32_i64})) (result (ref $[mut:ref?|[mut:f64]|])) (local $3 (ref null $[mut:f64])) (local $4 (ref null $[mut:ref?|[mut:f64]|])) (local $5 (ref null $[mut:i8])) @@ -172,7 +173,7 @@ ) (unreachable) ) - (func $2 (param $0 anyref) + (func $2 (type $anyref_=>_none) (param $0 anyref) (if (ref.is_func (local.get $0) @@ -192,7 +193,7 @@ (unreachable) ) ) - (func $3 (param $0 anyref) + (func $3 (type $anyref_=>_none) (param $0 anyref) (drop (ref.as_non_null (local.get $0) @@ -214,7 +215,7 @@ ) ) ) - (func $4 (param $0 anyref) + (func $4 (type $anyref_=>_none) (param $0 anyref) (local $1 anyref) (local $2 anyref) (local $3 funcref) @@ -296,40 +297,40 @@ ) ) ) - (func $5 + (func $5 (type $none_=>_none) (unreachable) ) - (func $6 (param $0 (ref null ${mut:f32})) + (func $6 (type $ref?|{mut:f32}|_=>_none) (param $0 (ref null ${mut:f32})) (drop (local.get $0) ) (unreachable) ) - (func $7 + (func $7 (type $none_=>_none) (unreachable) ) - (func $8 + (func $8 (type $none_=>_none) (unreachable) ) - (func $9 + (func $9 (type $none_=>_none) (unreachable) ) - (func $10 (param $0 (ref null $[mut:f64])) + (func $10 (type $ref?|[mut:f64]|_=>_none) (param $0 (ref null $[mut:f64])) (drop (local.get $0) ) (unreachable) ) - (func $11 + (func $11 (type $none_=>_none) (unreachable) ) - (func $12 (param $0 (ref null $[mut:f64])) + (func $12 (type $ref?|[mut:f64]|_=>_none) (param $0 (ref null $[mut:f64])) (drop (local.get $0) ) (unreachable) ) - (func $13 (param $0 (ref null $[mut:f64])) + (func $13 (type $ref?|[mut:f64]|_=>_none) (param $0 (ref null $[mut:f64])) (drop (local.get $0) ) @@ -338,10 +339,10 @@ ) (unreachable) ) - (func $14 + (func $14 (type $none_=>_none) (unreachable) ) - (func $15 (param $0 (ref $[mut:f64])) (param $1 (ref null $[mut:f64])) + (func $15 (type $ref|[mut:f64]|_ref?|[mut:f64]|_=>_none) (param $0 (ref $[mut:f64])) (param $1 (ref null $[mut:f64])) (array.copy $[mut:f64] $[mut:f64] (local.get $0) (i32.const 11) @@ -350,7 +351,7 @@ (i32.const 1337) ) ) - (func $16 (result (ref $[mut:f64])) + (func $16 (type $none_=>_ref|[mut:f64]|) (result (ref $[mut:f64])) (array.init_static $[mut:f64] (f64.const 1) (f64.const 2) @@ -358,14 +359,14 @@ (f64.const 8) ) ) - (func $17 (result (ref $[mut:i8])) + (func $17 (type $none_=>_ref|[mut:i8]|) (result (ref $[mut:i8])) (array.init_static $[mut:i8] (i32.const 4) (i32.const 2) (i32.const 1) ) ) - (func $18 + (func $18 (type $none_=>_none) (local $0 (ref null ${i32_f32_f64})) (local $1 (ref null ${i8_mut:i16_ref|{i32_f32_f64}|_mut:ref|{i32_f32_f64}|})) (drop diff --git a/test/kitchen_sink.wast.from-wast b/test/kitchen_sink.wast.from-wast index bdf6279b7..db039b252 100644 --- a/test/kitchen_sink.wast.from-wast +++ b/test/kitchen_sink.wast.from-wast @@ -2,7 +2,7 @@ (type $0 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $kitchensink (result i32) + (func $kitchensink (type $0) (result i32) (block $block0 (result i32) (drop (i32.add diff --git a/test/kitchen_sink.wast.fromBinary b/test/kitchen_sink.wast.fromBinary index e0d20d32f..ad698edb1 100644 --- a/test/kitchen_sink.wast.fromBinary +++ b/test/kitchen_sink.wast.fromBinary @@ -2,7 +2,7 @@ (type $0 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $kitchensink (result i32) + (func $kitchensink (type $0) (result i32) (drop (i32.add (i32.const 10) diff --git a/test/kitchen_sink.wast.fromBinary.noDebugInfo b/test/kitchen_sink.wast.fromBinary.noDebugInfo index 18e0ddb7a..791956d4b 100644 --- a/test/kitchen_sink.wast.fromBinary.noDebugInfo +++ b/test/kitchen_sink.wast.fromBinary.noDebugInfo @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (drop (i32.add (i32.const 10) diff --git a/test/lit/array-new-seg-note-count.wast b/test/lit/array-new-seg-note-count.wast index 45c08e313..43720e731 100644 --- a/test/lit/array-new-seg-note-count.wast +++ b/test/lit/array-new-seg-note-count.wast @@ -10,7 +10,7 @@ ;; CHECK: (data "") (data "") - ;; CHECK: (func $test (result (ref $vec)) + ;; CHECK: (func $test (type $none_=>_ref|$vec|) (result (ref $vec)) ;; CHECK-NEXT: (array.new_data $vec 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) diff --git a/test/lit/arrays.wast b/test/lit/arrays.wast index bccbaeb09..8cadc14fb 100644 --- a/test/lit/arrays.wast +++ b/test/lit/arrays.wast @@ -45,12 +45,12 @@ (elem func $len $impossible-len $unreachable-len) - ;; CHECK: (func $len (param $a (ref array)) (result i32) + ;; CHECK: (func $len (type $ref|array|_=>_i32) (param $a (ref array)) (result i32) ;; CHECK-NEXT: (array.len ;; CHECK-NEXT: (local.get $a) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $len (param $a (ref array)) (result i32) + ;; ROUNDTRIP: (func $len (type $ref|array|_=>_i32) (param $a (ref array)) (result i32) ;; ROUNDTRIP-NEXT: (array.len ;; ROUNDTRIP-NEXT: (local.get $a) ;; ROUNDTRIP-NEXT: ) @@ -62,12 +62,12 @@ ) ) - ;; CHECK: (func $impossible-len (param $none nullref) (result i32) + ;; CHECK: (func $impossible-len (type $nullref_=>_i32) (param $none nullref) (result i32) ;; CHECK-NEXT: (array.len ;; CHECK-NEXT: (local.get $none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $impossible-len (param $none nullref) (result i32) + ;; ROUNDTRIP: (func $impossible-len (type $nullref_=>_i32) (param $none nullref) (result i32) ;; ROUNDTRIP-NEXT: (array.len ;; ROUNDTRIP-NEXT: (local.get $none) ;; ROUNDTRIP-NEXT: ) @@ -78,12 +78,12 @@ ) ) - ;; CHECK: (func $unreachable-len (param $a arrayref) (result i32) + ;; CHECK: (func $unreachable-len (type $arrayref_=>_i32) (param $a arrayref) (result i32) ;; CHECK-NEXT: (array.len ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $unreachable-len (param $a arrayref) (result i32) + ;; ROUNDTRIP: (func $unreachable-len (type $arrayref_=>_i32) (param $a arrayref) (result i32) ;; ROUNDTRIP-NEXT: (unreachable) ;; ROUNDTRIP-NEXT: ) (func $unreachable-len (param $a arrayref) (result i32) @@ -92,12 +92,12 @@ ) ) - ;; CHECK: (func $unannotated-len (param $a arrayref) (result i32) + ;; CHECK: (func $unannotated-len (type $arrayref_=>_i32) (param $a arrayref) (result i32) ;; CHECK-NEXT: (array.len ;; CHECK-NEXT: (local.get $a) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $unannotated-len (param $a arrayref) (result i32) + ;; ROUNDTRIP: (func $unannotated-len (type $arrayref_=>_i32) (param $a arrayref) (result i32) ;; ROUNDTRIP-NEXT: (array.len ;; ROUNDTRIP-NEXT: (local.get $a) ;; ROUNDTRIP-NEXT: ) @@ -108,13 +108,13 @@ ) ) - ;; CHECK: (func $new-data (result (ref $byte-array)) + ;; CHECK: (func $new-data (type $none_=>_ref|$byte-array|) (result (ref $byte-array)) ;; CHECK-NEXT: (array.new_data $byte-array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $new-data (result (ref $byte-array)) + ;; ROUNDTRIP: (func $new-data (type $none_=>_ref|$byte-array|) (result (ref $byte-array)) ;; ROUNDTRIP-NEXT: (array.new_data $byte-array 0 ;; ROUNDTRIP-NEXT: (i32.const 0) ;; ROUNDTRIP-NEXT: (i32.const 5) @@ -127,13 +127,13 @@ ) ) - ;; CHECK: (func $new-elem (result (ref $func-array)) + ;; CHECK: (func $new-elem (type $none_=>_ref|$func-array|) (result (ref $func-array)) ;; CHECK-NEXT: (array.new_elem $func-array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; ROUNDTRIP: (func $new-elem (result (ref $func-array)) + ;; ROUNDTRIP: (func $new-elem (type $none_=>_ref|$func-array|) (result (ref $func-array)) ;; ROUNDTRIP-NEXT: (array.new_elem $func-array 0 ;; ROUNDTRIP-NEXT: (i32.const 0) ;; ROUNDTRIP-NEXT: (i32.const 3) diff --git a/test/lit/binary/annotated-array-len.test b/test/lit/binary/annotated-array-len.test index a8eb08fe7..62e51fcf3 100644 --- a/test/lit/binary/annotated-array-len.test +++ b/test/lit/binary/annotated-array-len.test @@ -5,9 +5,9 @@ ;; RUN: wasm-dis %s.wasm -all --nominal | filecheck %s -;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) +;; CHECK: (type $none_=>_i32 (func (result i32))) -;; CHECK: (type $[mut:i8] (array_subtype (mut i8) data)) +;; CHECK: (type $[mut:i8] (array (mut i8))) ;; CHECK: (func $0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (array.len diff --git a/test/lit/binary/prototype-nominal-format.test b/test/lit/binary/prototype-nominal-format.test index 98ed51158..1f9d27951 100644 --- a/test/lit/binary/prototype-nominal-format.test +++ b/test/lit/binary/prototype-nominal-format.test @@ -4,14 +4,14 @@ ;; RUN: wasm-dis %s.wasm -all --nominal | filecheck %s ;; CHECK: (module -;; CHECK-NEXT: (type $super-struct (struct_subtype (field i32) data)) -;; CHECK-NEXT: (type $sub-struct (struct_subtype (field i32) (field i64) data)) -;; CHECK-NEXT: (type $none_=>_ref|$super-struct| (func_subtype (result (ref $super-struct)) func)) -;; CHECK-NEXT: (type $none_=>_ref|$sub-struct| (func_subtype (result (ref $sub-struct)) func)) -;; CHECK-NEXT: (type $none_=>_ref|$super-array| (func_subtype (result (ref $super-array)) func)) -;; CHECK-NEXT: (type $none_=>_ref|$sub-array| (func_subtype (result (ref $sub-array)) func)) -;; CHECK-NEXT: (type $super-array (array_subtype (ref $super-struct) data)) -;; CHECK-NEXT: (type $sub-array (array_subtype (ref $sub-struct) data)) +;; CHECK-NEXT: (type $super-struct (struct (field i32))) +;; CHECK-NEXT: (type $sub-struct (struct (field i32) (field i64))) +;; CHECK-NEXT: (type $none_=>_ref|$super-struct| (func (result (ref $super-struct)))) +;; CHECK-NEXT: (type $none_=>_ref|$sub-struct| (func (result (ref $sub-struct)))) +;; CHECK-NEXT: (type $none_=>_ref|$super-array| (func (result (ref $super-array)))) +;; CHECK-NEXT: (type $none_=>_ref|$sub-array| (func (result (ref $sub-array)))) +;; CHECK-NEXT: (type $super-array (array (ref $super-struct))) +;; CHECK-NEXT: (type $sub-array (array (ref $sub-struct))) ;; CHECK-NEXT: (func $make-super-struct (type $none_=>_ref|$super-struct|) (result (ref $super-struct)) ;; CHECK-NEXT: (call $make-sub-struct) ;; CHECK-NEXT: ) diff --git a/test/lit/extern-conversions.wast b/test/lit/extern-conversions.wast index d3ad4d2d5..a421031c9 100644 --- a/test/lit/extern-conversions.wast +++ b/test/lit/extern-conversions.wast @@ -15,7 +15,7 @@ ;; CHECK: (export "int" (func $extern.internalize)) - ;; CHECK: (func $extern.externalize (param $0 (ref any)) (result (ref extern)) + ;; CHECK: (func $extern.externalize (type $ref|any|_=>_ref|extern|) (param $0 (ref any)) (result (ref extern)) ;; CHECK-NEXT: (extern.externalize ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) @@ -26,7 +26,7 @@ ) ) - ;; CHECK: (func $extern.internalize (param $0 externref) (result anyref) + ;; CHECK: (func $extern.internalize (type $externref_=>_anyref) (param $0 externref) (result anyref) ;; CHECK-NEXT: (extern.internalize ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) diff --git a/test/lit/gc-eh.wast b/test/lit/gc-eh.wast index 335bad525..df2f3b416 100644 --- a/test/lit/gc-eh.wast +++ b/test/lit/gc-eh.wast @@ -7,7 +7,7 @@ (module ;; CHECK: (type $A (struct (field (mut i32)))) - ;; NOMNL: (type $A (struct_subtype (field (mut i32)) data)) + ;; NOMNL: (type $A (struct (field (mut i32)))) (type $A (struct (field (mut i32)) )) @@ -16,7 +16,7 @@ ;; NOMNL: (tag $tagA (param (ref $A))) (tag $tagA (param (ref $A))) - ;; CHECK: (func $foo (result (ref null $A)) + ;; CHECK: (func $foo (type $none_=>_ref?|$A|) (result (ref null $A)) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) diff --git a/test/lit/gc-read-write-effects.wast b/test/lit/gc-read-write-effects.wast index b7ba2d065..da869e9b9 100644 --- a/test/lit/gc-read-write-effects.wast +++ b/test/lit/gc-read-write-effects.wast @@ -8,7 +8,7 @@ (module ;; CHECK: (type $A (struct (field (mut i32)))) - ;; NOMNL: (type $A (struct_subtype (field (mut i32)) data)) + ;; NOMNL: (type $A (struct (field (mut i32)))) (type $A (struct (field (mut i32)) )) @@ -24,7 +24,7 @@ ;; a.0 = 10 ;; return a.0 ;; - ;; CHECK: (func $test (param $x (ref null $A)) (result i32) + ;; CHECK: (func $test (type $ref?|$A|_=>_i32) (param $x (ref null $A)) (result i32) ;; CHECK-NEXT: (local $y i32) ;; CHECK-NEXT: (local.set $y ;; CHECK-NEXT: (struct.get $A 0 diff --git a/test/lit/heap-types.wast b/test/lit/heap-types.wast index 13d37217e..dc71eb41e 100644 --- a/test/lit/heap-types.wast +++ b/test/lit/heap-types.wast @@ -11,9 +11,9 @@ (module ;; CHECK: (type $struct.A (struct (field i32))) (type $struct.A (struct i32)) - ;; NOMNL: (type $struct.B (struct_subtype (field i32) data)) + ;; NOMNL: (type $struct.B (struct (field i32))) (type $struct.B (struct i32)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $struct.A ;; CHECK-NEXT: (ref.null none) @@ -37,9 +37,9 @@ (module ;; CHECK: (type $struct.A (struct (field i32))) (type $struct.A (struct i32)) - ;; NOMNL: (type $struct.B (struct_subtype (field i32) data)) + ;; NOMNL: (type $struct.B (struct (field i32))) (type $struct.B (struct i32)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct.A ;; CHECK-NEXT: (ref.null none) @@ -62,9 +62,9 @@ (module ;; CHECK: (type $struct.A (struct (field i32))) - ;; NOMNL: (type $struct.A (struct_subtype (field i32) data)) + ;; NOMNL: (type $struct.A (struct (field i32))) (type $struct.A (struct i32)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (struct.new_default $struct.A) ;; CHECK-NEXT: ) @@ -83,9 +83,9 @@ (module ;; CHECK: (type $vector (array (mut f64))) - ;; NOMNL: (type $vector (array_subtype (mut f64) data)) + ;; NOMNL: (type $vector (array (mut f64))) (type $vector (array (mut f64))) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (array.new $vector ;; CHECK-NEXT: (f64.const 3.14159) @@ -113,9 +113,9 @@ (module ;; CHECK: (type $vector (array (mut f64))) - ;; NOMNL: (type $vector (array_subtype (mut f64) data)) + ;; NOMNL: (type $vector (array (mut f64))) (type $vector (array (mut f64))) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (array.init_static $vector ;; CHECK-NEXT: (f64.const 1) diff --git a/test/lit/isorecursive-good.wast b/test/lit/isorecursive-good.wast index 2d38bc9d2..350aabcf9 100644 --- a/test/lit/isorecursive-good.wast +++ b/test/lit/isorecursive-good.wast @@ -9,8 +9,8 @@ (rec ;; HYBRID: (rec - ;; HYBRID-NEXT: (type $super-struct (struct_subtype (field i32) data)) - ;; NOMINAL: (type $super-struct (struct_subtype (field i32) data)) + ;; HYBRID-NEXT: (type $super-struct (struct (field i32))) + ;; NOMINAL: (type $super-struct (struct (field i32))) (type $super-struct (struct i32)) ;; HYBRID: (type $sub-struct (struct_subtype (field i32) (field i64) $super-struct)) ;; NOMINAL: (type $sub-struct (struct_subtype (field i32) (field i64) $super-struct)) @@ -19,8 +19,8 @@ (rec ;; HYBRID: (rec - ;; HYBRID-NEXT: (type $super-array (array_subtype (ref $super-struct) data)) - ;; NOMINAL: (type $super-array (array_subtype (ref $super-struct) data)) + ;; HYBRID-NEXT: (type $super-array (array (ref $super-struct))) + ;; NOMINAL: (type $super-array (array (ref $super-struct))) (type $super-array (array (ref $super-struct))) ;; HYBRID: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) ;; NOMINAL: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) diff --git a/test/lit/isorecursive-output-ordering.wast b/test/lit/isorecursive-output-ordering.wast index b7fd614e5..a287158f2 100644 --- a/test/lit/isorecursive-output-ordering.wast +++ b/test/lit/isorecursive-output-ordering.wast @@ -9,22 +9,22 @@ (rec ;; CHECK: (rec - ;; CHECK-NEXT: (type $unused-6 (struct_subtype data)) + ;; CHECK-NEXT: (type $unused-6 (struct )) - ;; CHECK: (type $used-a-bit (struct_subtype data)) + ;; CHECK: (type $used-a-bit (struct )) ;; CHECK: (rec - ;; CHECK-NEXT: (type $unused-1 (struct_subtype data)) + ;; CHECK-NEXT: (type $unused-1 (struct )) (type $unused-1 (struct_subtype data)) - ;; CHECK: (type $unused-2 (struct_subtype data)) + ;; CHECK: (type $unused-2 (struct )) (type $unused-2 (struct_subtype data)) - ;; CHECK: (type $unused-3 (struct_subtype data)) + ;; CHECK: (type $unused-3 (struct )) (type $unused-3 (struct_subtype data)) - ;; CHECK: (type $unused-4 (struct_subtype data)) + ;; CHECK: (type $unused-4 (struct )) (type $unused-4 (struct_subtype data)) - ;; CHECK: (type $used-a-lot (struct_subtype data)) + ;; CHECK: (type $used-a-lot (struct )) (type $used-a-lot (struct_subtype data)) - ;; CHECK: (type $unused-5 (struct_subtype data)) + ;; CHECK: (type $unused-5 (struct )) (type $unused-5 (struct_subtype data)) ) @@ -47,9 +47,9 @@ (rec ;; CHECK: (rec - ;; CHECK-NEXT: (type $leaf (struct_subtype data)) + ;; CHECK-NEXT: (type $leaf (struct )) (type $leaf (struct_subtype data)) - ;; CHECK: (type $unused (struct_subtype data)) + ;; CHECK: (type $unused (struct )) (type $unused (struct_subtype data)) ) @@ -57,12 +57,12 @@ ;; CHECK: (rec ;; CHECK-NEXT: (type $shrub (struct_subtype $leaf)) - ;; CHECK: (type $used-a-ton (struct_subtype data)) + ;; CHECK: (type $used-a-ton (struct )) ;; CHECK: (rec - ;; CHECK-NEXT: (type $twig (struct_subtype data)) + ;; CHECK-NEXT: (type $twig (struct )) (type $twig (struct_subtype data)) - ;; CHECK: (type $used-a-bit (struct_subtype (field (ref $leaf)) data)) + ;; CHECK: (type $used-a-bit (struct (field (ref $leaf)))) (type $used-a-bit (struct_subtype (ref $leaf) data)) ) @@ -73,7 +73,7 @@ (rec ;; CHECK: (rec - ;; CHECK-NEXT: (type $root (struct_subtype data)) + ;; CHECK-NEXT: (type $root (struct )) (type $root (struct_subtype data)) ;; CHECK: (type $used-a-lot (struct_subtype $twig)) (type $used-a-lot (struct_subtype $twig)) @@ -99,7 +99,7 @@ ;; Test that basic heap type children do not trigger assertions. (rec - ;; CHECK: (type $contains-basic (struct_subtype (field (ref any)) data)) + ;; CHECK: (type $contains-basic (struct (field (ref any)))) (type $contains-basic (struct_subtype (ref any) data)) ) diff --git a/test/lit/isorecursive-singleton-group.wast b/test/lit/isorecursive-singleton-group.wast index bde2848bf..f5f91c516 100644 --- a/test/lit/isorecursive-singleton-group.wast +++ b/test/lit/isorecursive-singleton-group.wast @@ -10,7 +10,7 @@ (rec - ;; CHECK: (type $singleton (struct_subtype data)) + ;; CHECK: (type $singleton (struct )) (type $singleton (struct_subtype data)) ) diff --git a/test/lit/isorecursive-whole-group.wast b/test/lit/isorecursive-whole-group.wast index 70f2f1e4e..c202814c3 100644 --- a/test/lit/isorecursive-whole-group.wast +++ b/test/lit/isorecursive-whole-group.wast @@ -11,9 +11,9 @@ (rec ;; CHECK: (rec - ;; CHECK-NEXT: (type $used (struct_subtype data)) + ;; CHECK-NEXT: (type $used (struct )) (type $used (struct_subtype data)) - ;; CHECK: (type $unused (struct_subtype data)) + ;; CHECK: (type $unused (struct )) (type $unused (struct_subtype data)) ) diff --git a/test/lit/lub-bug-3843.wast b/test/lit/lub-bug-3843.wast index 768d47fdc..8bf384c71 100644 --- a/test/lit/lub-bug-3843.wast +++ b/test/lit/lub-bug-3843.wast @@ -1,5 +1,5 @@ ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. -;; RUN: wasm-opt %s -all --precompute -S -o - | filecheck %s +;; RUN: wasm-opt %s -all --precompute --structural -S -o - | filecheck %s ;; RUN: wasm-opt %s -all --precompute --nominal -S -o - | filecheck %s --check-prefix NOMNL ;; Regression test for a bug (#3843) in which the LUB calculation done during @@ -8,7 +8,7 @@ (module ;; CHECK: (type $A (struct (field (ref null $C)))) - ;; NOMNL: (type $A (struct_subtype (field (ref null $C)) data)) + ;; NOMNL: (type $A (struct (field (ref null $C)))) (type $A (struct (field (ref null $C)))) ;; CHECK: (type $B (struct (field (ref null $D)))) @@ -18,7 +18,7 @@ ;; CHECK: (type $C (struct (field (mut (ref $A))))) ;; CHECK: (type $D (struct (field (mut (ref $A))) (field (mut (ref $A))))) - ;; NOMNL: (type $C (struct_subtype (field (mut (ref $A))) data)) + ;; NOMNL: (type $C (struct (field (mut (ref $A))))) ;; NOMNL: (type $D (struct_subtype (field (mut (ref $A))) (field (mut (ref $A))) $C)) (type $D (struct_subtype (field (mut (ref $A))) (field (mut (ref $A))) $C)) diff --git a/test/lit/memory64-limits.wast b/test/lit/memory64-limits.wast index f2d395a13..aecfee725 100644 --- a/test/lit/memory64-limits.wast +++ b/test/lit/memory64-limits.wast @@ -1,31 +1,32 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. ;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s -;; CHECK: (module -;; CHECK-NEXT: (type $none_=>_i64 (func (result i64))) -;; CHECK-NEXT: (type $none_=>_none (func)) -;; CHECK-NEXT: (memory $0 i64 1 4294967296) -;; CHECK-NEXT: (func $load_i64 (result i64) -;; CHECK-NEXT: (i64.load offset=8589934592 -;; CHECK-NEXT: (i64.const 4294967296) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (func $store -;; CHECK-NEXT: (i64.store offset=8589934592 -;; CHECK-NEXT: (i64.const 4294967296) -;; CHECK-NEXT: (i64.const 123) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT:) (module + ;; CHECK: (type $none_=>_i64 (func (result i64))) + + ;; CHECK: (type $none_=>_none (func)) + + ;; CHECK: (memory $0 i64 1 4294967296) (memory $0 i64 1 4294967296) + ;; CHECK: (func $load_i64 (type $none_=>_i64) (result i64) + ;; CHECK-NEXT: (i64.load offset=8589934592 + ;; CHECK-NEXT: (i64.const 4294967296) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) (func $load_i64 (result i64) (i64.load offset=8589934592 (i64.const 0x100000000) ) ) + ;; CHECK: (func $store (type $none_=>_none) + ;; CHECK-NEXT: (i64.store offset=8589934592 + ;; CHECK-NEXT: (i64.const 4294967296) + ;; CHECK-NEXT: (i64.const 123) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) (func $store (result) (i64.store offset=8589934592 (i64.const 0x100000000) diff --git a/test/lit/memory64-ops.wast b/test/lit/memory64-ops.wast index 5ed44df59..e6c4ca4ec 100644 --- a/test/lit/memory64-ops.wast +++ b/test/lit/memory64-ops.wast @@ -6,7 +6,7 @@ ;; CHECK: (memory $mem i64 1) (memory $mem i64 1) - ;; CHECK: (func $get_heap_size (result i64) + ;; CHECK: (func $get_heap_size (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (i64.shl ;; CHECK-NEXT: (memory.size) ;; CHECK-NEXT: (i64.const 16) @@ -19,7 +19,7 @@ ) ) - ;; CHECK: (func $grow-heap (result i64) + ;; CHECK: (func $grow-heap (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (memory.grow ;; CHECK-NEXT: (i64.const 32) ;; CHECK-NEXT: ) diff --git a/test/lit/nominal-chain.wast b/test/lit/nominal-chain.wast index 1403fbea4..7a1b3c933 100644 --- a/test/lit/nominal-chain.wast +++ b/test/lit/nominal-chain.wast @@ -7,7 +7,7 @@ ;; types. (module - ;; CHECK: (type $root (struct_subtype data)) + ;; CHECK: (type $root (struct )) ;; CHECK: (type $trunk (struct_subtype (field i32) $root)) diff --git a/test/lit/nominal-func.wast b/test/lit/nominal-func.wast index 9e59d6900..600b16bf6 100644 --- a/test/lit/nominal-func.wast +++ b/test/lit/nominal-func.wast @@ -6,7 +6,7 @@ ;; This will be the "canonical" function type rather than $foo_t (type $bad_t (func)) - ;; CHECK: (type $foo_t (func_subtype func)) + ;; CHECK: (type $foo_t (func)) (type $foo_t (func)) ;; CHECK: (func $foo (type $foo_t) diff --git a/test/lit/nominal-good.wast b/test/lit/nominal-good.wast index 10ecc2901..ec64b466c 100644 --- a/test/lit/nominal-good.wast +++ b/test/lit/nominal-good.wast @@ -1,14 +1,16 @@ ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. ;; RUN: wasm-opt %s -all --nominal -S -o - | filecheck %s --check-prefix NOMINAL ;; RUN: wasm-opt %s -all --nominal --roundtrip -S -o - | filecheck %s --check-prefix NOMINAL -;; RUN: wasm-opt %s -all -S -o - | filecheck %s --check-prefix EQUIREC -;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s --check-prefix EQUIREC +;; RUN: wasm-opt %s -all --hybrid -S -o - | filecheck %s --check-prefix NOMINAL +;; RUN: wasm-opt %s -all --hybrid --roundtrip -S -o - | filecheck %s --check-prefix NOMINAL ;; RUN: wasm-opt %s -all --structural -S -o - | filecheck %s --check-prefix EQUIREC ;; RUN: wasm-opt %s -all --structural --roundtrip -S -o - | filecheck %s --check-prefix EQUIREC +;; Note that --hybrid and --nominal have the same output, so they share the NOMINAL prefix. + (module - ;; NOMINAL: (type $super-struct (struct_subtype (field i32) data)) + ;; NOMINAL: (type $super-struct (struct (field i32))) ;; EQUIREC: (type $super-struct (struct (field i32))) (type $super-struct (struct i32)) @@ -16,7 +18,7 @@ ;; EQUIREC: (type $sub-struct (struct (field i32) (field i64))) (type $sub-struct (struct_subtype i32 i64 $super-struct)) - ;; NOMINAL: (type $super-array (array_subtype (ref $super-struct) data)) + ;; NOMINAL: (type $super-array (array (ref $super-struct))) ;; EQUIREC: (type $super-array (array (ref $super-struct))) (type $super-array (array (ref $super-struct))) diff --git a/test/lit/nominal-named-field.wast b/test/lit/nominal-named-field.wast index 297ad0a9a..e7a5f9628 100644 --- a/test/lit/nominal-named-field.wast +++ b/test/lit/nominal-named-field.wast @@ -6,7 +6,7 @@ ;; RUN: wasm-opt %s -all --nominal --roundtrip -S -o - | filecheck %s (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) (field f32) (field $named f64) data)) + ;; CHECK: (type $struct (struct (field (mut i32)) (field f32) (field $named f64))) (type $struct (struct (field (mut i32)) (field f32) diff --git a/test/lit/nominal-to-isorecursive.wast b/test/lit/nominal-to-isorecursive.wast index 0d31a37a4..783191eb5 100644 --- a/test/lit/nominal-to-isorecursive.wast +++ b/test/lit/nominal-to-isorecursive.wast @@ -8,11 +8,11 @@ (module ;; CHECK: (rec - ;; CHECK-NEXT: (type $make-super-t (func_subtype (result (ref $super)) func)) + ;; CHECK-NEXT: (type $make-super-t (func (result (ref $super)))) - ;; CHECK: (type $make-sub-t (func_subtype (result (ref $sub)) func)) + ;; CHECK: (type $make-sub-t (func (result (ref $sub)))) - ;; CHECK: (type $super (struct_subtype (field i32) data)) + ;; CHECK: (type $super (struct (field i32))) (type $super (struct i32)) ;; CHECK: (type $sub (struct_subtype (field i32) $super)) (type $sub (struct_subtype i32 $super)) diff --git a/test/lit/non-nullable-locals.wast b/test/lit/non-nullable-locals.wast index 2a469b9e1..4d5321b58 100644 --- a/test/lit/non-nullable-locals.wast +++ b/test/lit/non-nullable-locals.wast @@ -13,7 +13,7 @@ ;; CHECK: (elem declare func $helper) - ;; CHECK: (func $no-uses + ;; CHECK: (func $no-uses (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -22,7 +22,7 @@ (local $x (ref func)) ) - ;; CHECK: (func $func-scope + ;; CHECK: (func $func-scope (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $helper) @@ -42,7 +42,7 @@ ) ) - ;; CHECK: (func $inner-scope + ;; CHECK: (func $inner-scope (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (block $b ;; CHECK-NEXT: (local.set $x @@ -66,7 +66,7 @@ ) ) - ;; CHECK: (func $func-to-inner + ;; CHECK: (func $func-to-inner (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $helper) @@ -90,7 +90,7 @@ ) ) - ;; CHECK: (func $inner-to-func + ;; CHECK: (func $inner-to-func (type $none_=>_none) ;; CHECK-NEXT: (local $x funcref) ;; CHECK-NEXT: (block $b ;; CHECK-NEXT: (local.set $x @@ -115,7 +115,7 @@ ) ) - ;; CHECK: (func $if-condition + ;; CHECK: (func $if-condition (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (call $helper2 @@ -149,7 +149,7 @@ ) ) - ;; CHECK: (func $get-without-set-but-param (param $x (ref func)) + ;; CHECK: (func $get-without-set-but-param (type $ref|func|_=>_none) (param $x (ref func)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -162,12 +162,12 @@ ) ) - ;; CHECK: (func $helper + ;; CHECK: (func $helper (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $helper) - ;; CHECK: (func $helper2 (param $0 funcref) (result i32) + ;; CHECK: (func $helper2 (type $funcref_=>_i32) (param $0 funcref) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $helper2 (param funcref) (result i32) diff --git a/test/lit/parse-double-unreachable.wast b/test/lit/parse-double-unreachable.wast index 0dd657a62..333eb6fa9 100644 --- a/test/lit/parse-double-unreachable.wast +++ b/test/lit/parse-double-unreachable.wast @@ -7,7 +7,7 @@ (module - ;; CHECK: (type $array (array_subtype i8 data)) + ;; CHECK: (type $array (array i8)) (type $array (array i8)) (type $func (func (result i32))) diff --git a/test/lit/parse-nominal-types-extends.wast b/test/lit/parse-nominal-types-extends.wast index 9dbf6a0de..e7641937d 100644 --- a/test/lit/parse-nominal-types-extends.wast +++ b/test/lit/parse-nominal-types-extends.wast @@ -10,7 +10,7 @@ (module (type $sub (func) (extends $super)) - ;; CHECK: (type $super (func_subtype func)) + ;; CHECK: (type $super (func)) (type $super (func)) ;; CHECK: (global $g (ref null $super) (ref.null nofunc)) @@ -21,7 +21,7 @@ (module (type $sub (func (param i32) (result i32)) (extends $super)) - ;; CHECK: (type $super (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $super (func (param i32) (result i32))) (type $super (func (param i32) (result i32))) ;; CHECK: (global $g (ref null $super) (ref.null nofunc)) @@ -32,7 +32,7 @@ (module (type $sub (struct) (extends $super)) - ;; CHECK: (type $super (struct_subtype data)) + ;; CHECK: (type $super (struct )) (type $super (struct)) ;; CHECK: (global $g (ref null $super) (ref.null none)) @@ -43,7 +43,7 @@ (module (type $sub (struct i32 (field i64)) (extends $super)) - ;; CHECK: (type $super (struct_subtype (field i32) (field i64) data)) + ;; CHECK: (type $super (struct (field i32) (field i64))) (type $super (struct (field i32) i64)) ;; CHECK: (global $g (ref null $super) (ref.null none)) @@ -54,7 +54,7 @@ (module (type $sub (array i8) (extends $super)) - ;; CHECK: (type $super (array_subtype i8 data)) + ;; CHECK: (type $super (array i8)) (type $super (array i8)) ;; CHECK: (global $g (ref null $super) (ref.null none)) diff --git a/test/lit/parse-nominal-types.wast b/test/lit/parse-nominal-types.wast index 6bb0c8383..45f110a36 100644 --- a/test/lit/parse-nominal-types.wast +++ b/test/lit/parse-nominal-types.wast @@ -10,7 +10,7 @@ (module (type $sub (func_subtype $super)) - ;; CHECK: (type $super (func_subtype func)) + ;; CHECK: (type $super (func)) (type $super (func_subtype func)) ;; CHECK: (global $g (ref null $super) (ref.null nofunc)) @@ -21,7 +21,7 @@ (module (type $sub (func_subtype (param i32) (result i32) $super)) - ;; CHECK: (type $super (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $super (func (param i32) (result i32))) (type $super (func_subtype (param i32) (result i32) func)) ;; CHECK: (global $g (ref null $super) (ref.null nofunc)) @@ -32,7 +32,7 @@ (module (type $sub (struct_subtype $super)) - ;; CHECK: (type $super (struct_subtype data)) + ;; CHECK: (type $super (struct )) (type $super (struct_subtype data)) ;; CHECK: (global $g (ref null $super) (ref.null none)) @@ -43,7 +43,7 @@ (module (type $sub (struct_subtype i32 (field i64) $super)) - ;; CHECK: (type $super (struct_subtype (field i32) (field i64) data)) + ;; CHECK: (type $super (struct (field i32) (field i64))) (type $super (struct_subtype (field i32) i64 data)) ;; CHECK: (global $g (ref null $super) (ref.null none)) @@ -54,7 +54,7 @@ (module (type $sub (array_subtype i8 $super)) - ;; CHECK: (type $super (array_subtype i8 data)) + ;; CHECK: (type $super (array i8)) (type $super (array_subtype i8 data)) ;; CHECK: (global $g (ref null $super) (ref.null none)) diff --git a/test/lit/passes/Oz.wast b/test/lit/passes/Oz.wast index 59bfe46c3..07385a4a4 100644 --- a/test/lit/passes/Oz.wast +++ b/test/lit/passes/Oz.wast @@ -5,13 +5,14 @@ (module (memory 100 100) - ;; CHECK: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + ;; CHECK: (rec + ;; CHECK-NEXT: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) + ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + ;; CHECK: (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - ;; CHECK: (type $none_=>_v128 (func (result v128))) + ;; CHECK: (type $none_=>_v128 (func (result v128))) ;; CHECK: (memory $0 100 100) @@ -37,7 +38,7 @@ ;; CHECK: (export "precompute-simd" (func $precompute-simd)) - ;; CHECK: (func $basics (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $basics (type $i32_i32_=>_i32) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $0 ;; CHECK-NEXT: (i32.add @@ -59,7 +60,7 @@ ) (i32.add (local.get $x2) (local.get $y2)) ) - ;; CHECK: (func $8 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + ;; CHECK: (func $8 (type $i32_i32_i32_i32_=>_i32) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) ;; CHECK-NEXT: (i32.store ;; CHECK-NEXT: (local.tee $0 ;; CHECK-NEXT: (i32.add @@ -131,7 +132,7 @@ ) ) - ;; CHECK: (func $9 (; has Stack IR ;) (param $0 i32) (result i32) + ;; CHECK: (func $9 (type $i32_=>_i32) (; has Stack IR ;) (param $0 i32) (result i32) ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const -4) @@ -147,7 +148,7 @@ ) ) - ;; CHECK: (func $10 (; has Stack IR ;) (param $0 i32) (result i32) + ;; CHECK: (func $10 (type $i32_=>_i32) (; has Stack IR ;) (param $0 i32) (result i32) ;; CHECK-NEXT: (i32.shl ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 31) @@ -163,7 +164,7 @@ ) ) - ;; CHECK: (func $11 (; has Stack IR ;) (param $0 i32) (result i32) + ;; CHECK: (func $11 (type $i32_=>_i32) (; has Stack IR ;) (param $0 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (return @@ -193,7 +194,7 @@ ) (i32.const 0) ) - ;; CHECK: (func $12 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $12 (type $i32_i32_=>_i32) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $1 ;; CHECK-NEXT: (local.get $0) @@ -225,7 +226,7 @@ ) (i32.const 0) ) - ;; CHECK: (func $13 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $13 (type $i32_i32_=>_i32) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.get $1) @@ -250,7 +251,7 @@ (i32.const 0) ) - ;; CHECK: (func $14 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $14 (type $i32_i32_=>_i32) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 0) @@ -275,7 +276,7 @@ (i32.const 0) ) - ;; CHECK: (func $precompute-simd (; has Stack IR ;) (result v128) + ;; CHECK: (func $precompute-simd (type $none_=>_v128) (; has Stack IR ;) (result v128) ;; CHECK-NEXT: (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ;; CHECK-NEXT: ) (func $precompute-simd (export "precompute-simd") (result v128) diff --git a/test/lit/passes/catch-pop-fixup-eh.wast b/test/lit/passes/catch-pop-fixup-eh.wast index 813bb6899..f50a21a05 100644 --- a/test/lit/passes/catch-pop-fixup-eh.wast +++ b/test/lit/passes/catch-pop-fixup-eh.wast @@ -17,7 +17,7 @@ ;; CHECK: (tag $e-struct.A (param (ref $struct.A))) (tag $e-struct.A (param (ref $struct.A))) - ;; CHECK: (func $pop-within-block1 + ;; CHECK: (func $pop-within-block1 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -49,7 +49,7 @@ ) ) - ;; CHECK: (func $pop-within-block2 + ;; CHECK: (func $pop-within-block2 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -97,7 +97,7 @@ ) ) - ;; CHECK: (func $pop-within-block3 (result i32) + ;; CHECK: (func $pop-within-block3 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try (result i32) ;; CHECK-NEXT: (do @@ -138,11 +138,11 @@ ) ) - ;; CHECK: (func $helper + ;; CHECK: (func $helper (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $helper) - ;; CHECK: (func $pop-within-implicit-block1 + ;; CHECK: (func $pop-within-implicit-block1 (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -171,7 +171,7 @@ ) ) - ;; CHECK: (func $pop-within-implicit-block2 + ;; CHECK: (func $pop-within-implicit-block2 (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -202,7 +202,7 @@ ) ) - ;; CHECK: (func $pop-within-try (result i32) + ;; CHECK: (func $pop-within-try (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try (result i32) ;; CHECK-NEXT: (do @@ -242,7 +242,7 @@ ) ) - ;; CHECK: (func $pop-within-if-condition (result i32) + ;; CHECK: (func $pop-within-if-condition (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try $try (result i32) ;; CHECK-NEXT: (do ;; CHECK-NEXT: (i32.const 0) @@ -273,7 +273,7 @@ ) ) - ;; CHECK: (func $pop-within-block-within-if-condition + ;; CHECK: (func $pop-within-block-within-if-condition (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -317,7 +317,7 @@ ) ) - ;; CHECK: (func $pop-tuple-within-block + ;; CHECK: (func $pop-tuple-within-block (type $none_=>_none) ;; CHECK-NEXT: (local $x (i32 f32)) ;; CHECK-NEXT: (local $1 (i32 f32)) ;; CHECK-NEXT: (try $try @@ -354,7 +354,7 @@ ) ) - ;; CHECK: (func $pop-non-defaultable-type-within-block + ;; CHECK: (func $pop-non-defaultable-type-within-block (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref $struct.A)) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do diff --git a/test/lit/passes/cfp.wast b/test/lit/passes/cfp.wast index b1790bd17..e7ca52e6f 100644 --- a/test/lit/passes/cfp.wast +++ b/test/lit/passes/cfp.wast @@ -4,9 +4,9 @@ ;; name getting in the way) (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) ;; CHECK: (func $impossible-get (type $none_=>_none) ;; CHECK-NEXT: (local $struct (ref null $struct)) @@ -32,9 +32,9 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field i64) data)) + ;; CHECK: (type $struct (struct (field i64))) (type $struct (struct i64)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -71,9 +71,9 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field f32) data)) + ;; CHECK: (type $struct (struct (field f32))) (type $struct (struct f32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -109,9 +109,9 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field f32) data)) + ;; CHECK: (type $struct (struct (field f32))) (type $struct (struct f32)) - ;; CHECK: (type $f32_ref?|$struct|_=>_none (func_subtype (param f32 (ref null $struct)) func)) + ;; CHECK: (type $f32_ref?|$struct|_=>_none (func (param f32 (ref null $struct)))) ;; CHECK: (func $test (type $f32_ref?|$struct|_=>_none) (param $f f32) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -143,11 +143,11 @@ ;; Create in one function, get in another. The 10 should be forwarded to the ;; get. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -187,12 +187,12 @@ ;; As before, but with the order of functions reversed to check for any ordering ;; issues. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $get (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -233,9 +233,9 @@ ;; Different values assigned in the same function, in different struct.news, ;; so we cannot optimize the struct.get away. (module - ;; CHECK: (type $struct (struct_subtype (field f32) data)) + ;; CHECK: (type $struct (struct (field f32))) (type $struct (struct f32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -275,11 +275,11 @@ ;; Different values assigned in different functions, and one is a struct.set. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -326,11 +326,11 @@ ;; As the last testcase, but the values happen to coincide, so we can optimize ;; the get into a constant. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -381,13 +381,13 @@ ;; Check that we look into the fallthrough value that is assigned. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $i32_ref?|$struct|_=>_none (func_subtype (param i32 (ref null $struct)) func)) + ;; CHECK: (type $i32_ref?|$struct|_=>_none (func (param i32 (ref null $struct)))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -454,9 +454,9 @@ ;; Test a function reference instead of a number. (module - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $struct (struct_subtype (field funcref) data)) + ;; CHECK: (type $struct (struct (field funcref))) (type $struct (struct funcref)) ;; CHECK: (elem declare func $test) @@ -494,7 +494,7 @@ ;; Test for unreachable creations, sets, and gets. (module (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -545,11 +545,11 @@ ;; subtype, the get must trap anyhow (the reference it receives can ;; only be null in this closed world). (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$substruct|_=>_none (func_subtype (param (ref null $substruct)) func)) + ;; CHECK: (type $ref?|$substruct|_=>_none (func (param (ref null $substruct)))) ;; CHECK: (type $substruct (struct_subtype (field i32) $struct)) (type $substruct (struct_subtype i32 $struct)) @@ -592,11 +592,11 @@ ;; will optimize the result to the only possible value. (In practice, though, ;; it will trap anyhow.) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $ref?|$substruct|_=>_none (func_subtype (param (ref null $substruct)) func)) + ;; CHECK: (type $ref?|$substruct|_=>_none (func (param (ref null $substruct)))) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) $struct)) (type $substruct (struct_subtype (mut i32) $struct)) @@ -648,16 +648,16 @@ ;; reference to the subtype (we never create a supertype) and so we ;; can optimize. (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -699,14 +699,14 @@ ;; Subtyping: Create both a subtype and a supertype, with identical constants ;; for the shared field, and get the supertype. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -759,14 +759,14 @@ ;; for the shared field, preventing optimization, as a get of the ;; supertype may receive an instance of the subtype. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -815,16 +815,16 @@ ;; shared between the types, but we only create the substruct with ;; one value, so we can optimize. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$substruct|_=>_none (func_subtype (param (ref null $substruct)) func)) + ;; CHECK: (type $ref?|$substruct|_=>_none (func (param (ref null $substruct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -875,15 +875,15 @@ ;; As above, but add a set of $struct. The set prevents the optimization. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $ref?|$substruct|_=>_none (func_subtype (param (ref null $substruct)) func)) + ;; CHECK: (type $ref?|$substruct|_=>_none (func (param (ref null $substruct)))) ;; CHECK: (func $create (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -938,7 +938,7 @@ ;; Multi-level subtyping, check that we propagate not just to the immediate ;; supertype but all the way as needed. (module - ;; CHECK: (type $struct1 (struct_subtype (field i32) data)) + ;; CHECK: (type $struct1 (struct (field i32))) ;; CHECK: (type $struct2 (struct_subtype (field i32) (field f64) $struct1)) @@ -949,9 +949,9 @@ (type $struct1 (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func_subtype (param (ref null $struct1) (ref null $struct2) (ref null $struct3)) func)) + ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func (param (ref null $struct1) (ref null $struct2) (ref null $struct3)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -1075,7 +1075,7 @@ ;; different values in the sub-most type. Create the top and bottom types, but ;; not the middle one. (module - ;; CHECK: (type $struct1 (struct_subtype (field i32) (field i32) data)) + ;; CHECK: (type $struct1 (struct (field i32) (field i32))) ;; CHECK: (type $struct2 (struct_subtype (field i32) (field i32) (field f64) (field f64) $struct1)) @@ -1086,9 +1086,9 @@ (type $struct2 (struct_subtype i32 i32 f64 f64 $struct1)) - ;; CHECK: (type $anyref_=>_none (func_subtype (param anyref) func)) + ;; CHECK: (type $anyref_=>_none (func (param anyref))) - ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func_subtype (param (ref null $struct1) (ref null $struct2) (ref null $struct3)) func)) + ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func (param (ref null $struct1) (ref null $struct2) (ref null $struct3)))) ;; CHECK: (func $create (type $anyref_=>_none) (param $any anyref) ;; CHECK-NEXT: (drop @@ -1307,16 +1307,16 @@ ;; Multi-level subtyping with a different value in the middle of the chain. We ;; can only optimize $struct3. (module - ;; CHECK: (type $struct1 (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct1 (struct (field (mut i32)))) (type $struct1 (struct (mut i32))) ;; CHECK: (type $struct2 (struct_subtype (field (mut i32)) (field f64) $struct1)) (type $struct2 (struct_subtype (mut i32) f64 $struct1)) ;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype (mut i32) f64 anyref $struct2)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func_subtype (param (ref null $struct1) (ref null $struct2) (ref null $struct3)) func)) + ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func (param (ref null $struct1) (ref null $struct2) (ref null $struct3)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -1403,7 +1403,7 @@ ;; As above, but add not just a new of the middle class with a different value ;; but also a set. That prevents all optimizations. (module - ;; CHECK: (type $struct1 (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct1 (struct (field (mut i32)))) ;; CHECK: (type $struct2 (struct_subtype (field (mut i32)) (field f64) $struct1)) (type $struct2 (struct_subtype (mut i32) f64 $struct1)) @@ -1413,9 +1413,9 @@ ;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype (mut i32) f64 anyref $struct2)) - ;; CHECK: (type $ref?|$struct2|_=>_none (func_subtype (param (ref null $struct2)) func)) + ;; CHECK: (type $ref?|$struct2|_=>_none (func (param (ref null $struct2)))) - ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func_subtype (param (ref null $struct1) (ref null $struct2) (ref null $struct3)) func)) + ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_ref?|$struct3|_=>_none (func (param (ref null $struct1) (ref null $struct2) (ref null $struct3)))) ;; CHECK: (func $create (type $ref?|$struct2|_=>_none) (param $struct2 (ref null $struct2)) ;; CHECK-NEXT: (drop @@ -1506,12 +1506,12 @@ ;; Test for a struct with multiple fields, some of which are constant and hence ;; optimizable, and some not. Also test that some have the same type. (module - ;; CHECK: (type $struct (struct_subtype (field i32) (field f64) (field i32) (field f64) (field i32) data)) + ;; CHECK: (type $struct (struct (field i32) (field f64) (field i32) (field f64) (field i32))) (type $struct (struct i32 f64 i32 f64 i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -1630,7 +1630,7 @@ ;; sets, and the final subtype C has a create and a get. The set to A should ;; apply to it, preventing optimization. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) @@ -1641,11 +1641,11 @@ (type $B (struct_subtype (mut i32) $A)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CHECK: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; CHECK: (type $ref|$C|_=>_none (func_subtype (param (ref $C)) func)) + ;; CHECK: (type $ref|$C|_=>_none (func (param (ref $C)))) ;; CHECK: (func $create (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -1692,10 +1692,10 @@ ;; Copies of a field to itself can be ignored. As a result, we can optimize both ;; of the gets here. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_ref?|$struct|_=>_none (func_subtype (param (ref null $struct) (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_ref?|$struct|_=>_none (func (param (ref null $struct) (ref null $struct)))) ;; CHECK: (func $test (type $ref?|$struct|_ref?|$struct|_=>_none) (param $struct (ref null $struct)) (param $other (ref null $struct)) ;; CHECK-NEXT: (drop @@ -1746,11 +1746,11 @@ ;; Test of a near-copy, of a similar looking field (same index, and same field ;; type) but in a different struct. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)) (field (mut i32)))) (type $struct (struct (mut f32) (mut i32))) - ;; CHECK: (type $ref?|$struct|_ref?|$other|_=>_none (func_subtype (param (ref null $struct) (ref null $other)) func)) + ;; CHECK: (type $ref?|$struct|_ref?|$other|_=>_none (func (param (ref null $struct) (ref null $other)))) - ;; CHECK: (type $other (struct_subtype (field (mut f64)) (field (mut i32)) data)) + ;; CHECK: (type $other (struct (field (mut f64)) (field (mut i32)))) (type $other (struct (mut f64) (mut i32))) ;; CHECK: (func $test (type $ref?|$struct|_ref?|$other|_=>_none) (param $struct (ref null $struct)) (param $other (ref null $other)) @@ -1793,10 +1793,10 @@ ;; Test of a near-copy, of a different index. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)) (field (mut i32)))) (type $struct (struct (mut i32) (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop @@ -1839,10 +1839,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -1881,10 +1881,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global (mut i32) (i32.const 42)) (global $global (mut i32) (i32.const 42)) @@ -1917,10 +1917,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -1968,10 +1968,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2014,10 +2014,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2064,17 +2064,17 @@ ;; Test a global type other than i32. Arrays of structs are a realistic case ;; as they are used to implement itables. - ;; CHECK: (type $itable (array_subtype (ref $vtable) data)) + ;; CHECK: (type $itable (array (ref $vtable))) - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct funcref)) (type $itable (array (ref $vtable))) - ;; CHECK: (type $object (struct_subtype (field $itable (ref $itable)) data)) + ;; CHECK: (type $object (struct (field $itable (ref $itable)))) (type $object (struct (field $itable (ref $itable)))) - ;; CHECK: (type $ref?|$object|_=>_funcref (func_subtype (param (ref null $object)) (result funcref) func)) + ;; CHECK: (type $ref?|$object|_=>_funcref (func (param (ref null $object)) (result funcref))) ;; CHECK: (global $global (ref $itable) (array.init_static $itable ;; CHECK-NEXT: (struct.new $vtable diff --git a/test/lit/passes/coalesce-locals-eh.wast b/test/lit/passes/coalesce-locals-eh.wast index 9a3289776..3f94924a1 100644 --- a/test/lit/passes/coalesce-locals-eh.wast +++ b/test/lit/passes/coalesce-locals-eh.wast @@ -4,7 +4,7 @@ (module ;; CHECK: (tag $e (param)) - ;; CHECK: (func $bar (result i32) + ;; CHECK: (func $bar (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1984) ;; CHECK-NEXT: ) (func $bar (result i32) @@ -12,7 +12,7 @@ ) (tag $e) - ;; CHECK: (func $bug-cfg-traversal (param $0 i32) (result i32) + ;; CHECK: (func $bug-cfg-traversal (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (local.set $0 diff --git a/test/lit/passes/coalesce-locals-gc-nn.wast b/test/lit/passes/coalesce-locals-gc-nn.wast index 69e96ac62..438759dc3 100644 --- a/test/lit/passes/coalesce-locals-gc-nn.wast +++ b/test/lit/passes/coalesce-locals-gc-nn.wast @@ -3,7 +3,7 @@ ;; RUN: | filecheck %s (module - ;; CHECK: (func $nn-locals (param $0 (ref any)) + ;; CHECK: (func $nn-locals (type $ref|any|_=>_none) (param $0 (ref any)) ;; CHECK-NEXT: (local $1 ((ref any) (ref any))) ;; CHECK-NEXT: (local $2 ((ref any) (ref any))) ;; CHECK-NEXT: (local.set $1 @@ -82,7 +82,7 @@ ) ) - ;; CHECK: (func $unreachable-get-of-non-nullable + ;; CHECK: (func $unreachable-get-of-non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref any)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (drop diff --git a/test/lit/passes/coalesce-locals-gc.wast b/test/lit/passes/coalesce-locals-gc.wast index f8694ce86..db46d4afc 100644 --- a/test/lit/passes/coalesce-locals-gc.wast +++ b/test/lit/passes/coalesce-locals-gc.wast @@ -15,13 +15,13 @@ (type $A (struct_subtype (field (ref null data)) data)) - ;; CHECK: (type $B (struct (field (ref data)))) + ;; CHECK: (type $B (struct_subtype (field (ref data)) $A)) (type $B (struct_subtype (field (ref data)) $A)) ;; CHECK: (global $global (ref null $array) (ref.null none)) (global $global (ref null $array) (ref.null $array)) - ;; CHECK: (func $test-dead-get-non-nullable (param $0 (ref data)) + ;; CHECK: (func $test-dead-get-non-nullable (type $ref|data|_=>_none) (param $0 (ref data)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref data)) @@ -39,7 +39,7 @@ ) ) - ;; CHECK: (func $br_on_null (param $0 (ref null $array)) (result (ref null $array)) + ;; CHECK: (func $br_on_null (type $ref?|$array|_=>_ref?|$array|) (param $0 (ref null $array)) (result (ref null $array)) ;; CHECK-NEXT: (block $label$1 (result (ref null $array)) ;; CHECK-NEXT: (block $label$2 ;; CHECK-NEXT: (br $label$1 @@ -75,7 +75,7 @@ ) ) - ;; CHECK: (func $nn-dead + ;; CHECK: (func $nn-dead (type $none_=>_none) ;; CHECK-NEXT: (local $0 funcref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.func $nn-dead) @@ -114,7 +114,7 @@ ) ) - ;; CHECK: (func $nn-dead-nameless + ;; CHECK: (func $nn-dead-nameless (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref func)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.func $nn-dead) @@ -145,7 +145,7 @@ ) ) - ;; CHECK: (func $unreachable-get-null + ;; CHECK: (func $unreachable-get-null (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 i31ref) ;; CHECK-NEXT: (unreachable) @@ -174,7 +174,7 @@ ) ) - ;; CHECK: (func $remove-tee-refinalize (param $0 (ref null $A)) (param $1 (ref null $B)) (result dataref) + ;; CHECK: (func $remove-tee-refinalize (type $ref?|$A|_ref?|$B|_=>_dataref) (param $0 (ref null $A)) (param $1 (ref null $B)) (result dataref) ;; CHECK-NEXT: (struct.get $A 0 ;; CHECK-NEXT: (block (result (ref null $A)) ;; CHECK-NEXT: (local.get $1) @@ -195,7 +195,7 @@ ) ) - ;; CHECK: (func $remove-tee-refinalize-2 (param $0 (ref null $A)) (param $1 (ref null $B)) (result dataref) + ;; CHECK: (func $remove-tee-refinalize-2 (type $ref?|$A|_ref?|$B|_=>_dataref) (param $0 (ref null $A)) (param $1 (ref null $B)) (result dataref) ;; CHECK-NEXT: (struct.get $A 0 ;; CHECK-NEXT: (block (result (ref null $A)) ;; CHECK-NEXT: (local.get $1) diff --git a/test/lit/passes/code-folding-eh.wast b/test/lit/passes/code-folding-eh.wast index 11d518475..68d64b764 100644 --- a/test/lit/passes/code-folding-eh.wast +++ b/test/lit/passes/code-folding-eh.wast @@ -6,7 +6,7 @@ ;; CHECK: (tag $e-i32 (param i32)) (tag $e-i32 (param i32)) - ;; CHECK: (func $pop-test + ;; CHECK: (func $pop-test (type $none_=>_none) ;; CHECK-NEXT: (block $folding-inner0 ;; CHECK-NEXT: (try ;; CHECK-NEXT: (do @@ -67,12 +67,12 @@ ) ) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo) - ;; CHECK: (func $try-call-optimize-terminating-tails (result i32) + ;; CHECK: (func $try-call-optimize-terminating-tails (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (call $foo) @@ -116,7 +116,7 @@ (i32.const 0) ) - ;; CHECK: (func $try-call-optimize-expression-tails + ;; CHECK: (func $try-call-optimize-expression-tails (type $none_=>_none) ;; CHECK-NEXT: (block $x ;; CHECK-NEXT: (try ;; CHECK-NEXT: (do diff --git a/test/lit/passes/code-pushing-eh.wast b/test/lit/passes/code-pushing-eh.wast index 294c76898..689e0a9cd 100644 --- a/test/lit/passes/code-pushing-eh.wast +++ b/test/lit/passes/code-pushing-eh.wast @@ -7,7 +7,7 @@ ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) - ;; CHECK: (func $cannot-push-past-call + ;; CHECK: (func $cannot-push-past-call (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (local.set $x @@ -37,7 +37,7 @@ ) ) - ;; CHECK: (func $cannot-push-past-throw + ;; CHECK: (func $cannot-push-past-throw (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (local.set $x @@ -70,7 +70,7 @@ ) ) - ;; CHECK: (func $can-push-past-try + ;; CHECK: (func $can-push-past-try (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (try $try @@ -115,12 +115,12 @@ ) ) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo) - ;; CHECK: (func $cannot-push-past-try + ;; CHECK: (func $cannot-push-past-try (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (local.set $x @@ -167,7 +167,7 @@ ) ) - ;; CHECK: (func $cannot-push-past-rethrow-within-catch + ;; CHECK: (func $cannot-push-past-rethrow-within-catch (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (local.set $x @@ -214,7 +214,7 @@ ) ) - ;; CHECK: (func $can-push-past-try-delegate + ;; CHECK: (func $can-push-past-try-delegate (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (try $l @@ -269,7 +269,7 @@ ) ) - ;; CHECK: (func $cannot-push-past-try-delegate + ;; CHECK: (func $cannot-push-past-try-delegate (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (local.set $x @@ -324,7 +324,7 @@ ) ) - ;; CHECK: (func $can-push-past-conditional-throw (param $param i32) + ;; CHECK: (func $can-push-past-conditional-throw (type $i32_=>_none) (param $param i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $block ;; CHECK-NEXT: (if @@ -357,7 +357,7 @@ ) ) - ;; CHECK: (func $cannot-push-past-conditional-throw-extra-use (param $param i32) + ;; CHECK: (func $cannot-push-past-conditional-throw-extra-use (type $i32_=>_none) (param $param i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $block ;; CHECK-NEXT: (local.set $x diff --git a/test/lit/passes/code-pushing-gc.wast b/test/lit/passes/code-pushing-gc.wast index 9af0fc019..ca89ba247 100644 --- a/test/lit/passes/code-pushing-gc.wast +++ b/test/lit/passes/code-pushing-gc.wast @@ -2,7 +2,7 @@ ;; RUN: wasm-opt %s --code-pushing -all -S -o - | filecheck %s (module - ;; CHECK: (func $br_on + ;; CHECK: (func $br_on (type $none_=>_none) ;; CHECK-NEXT: (local $x funcref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $out (result (ref func)) @@ -40,7 +40,7 @@ ) ) - ;; CHECK: (func $br_on_no + ;; CHECK: (func $br_on_no (type $none_=>_none) ;; CHECK-NEXT: (local $x funcref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $out (result (ref func)) diff --git a/test/lit/passes/dae-gc-refine-params.wast b/test/lit/passes/dae-gc-refine-params.wast index a6cfb7ac5..53110efca 100644 --- a/test/lit/passes/dae-gc-refine-params.wast +++ b/test/lit/passes/dae-gc-refine-params.wast @@ -3,31 +3,28 @@ ;; RUN: wasm-opt %s -all --dae --nominal -S -o - | filecheck %s --check-prefix NOMNL (module - ;; CHECK: (type ${} (struct )) - ;; CHECK: (type ${i32} (struct (field i32))) - ;; NOMNL: (type ${} (struct_subtype data)) + ;; CHECK: (type ${} (struct )) + ;; NOMNL: (type ${} (struct )) + (type ${} (struct)) + ;; CHECK: (type ${i32} (struct_subtype (field i32) ${})) ;; NOMNL: (type ${i32} (struct_subtype (field i32) ${})) (type ${i32} (struct_subtype (field i32) ${})) - (type ${} (struct)) - - ;; CHECK: (type ${f64} (struct (field f64))) - - ;; CHECK: (type ${i32_i64} (struct (field i32) (field i64))) + ;; CHECK: (type ${f64} (struct_subtype (field f64) ${})) ;; NOMNL: (type ${f64} (struct_subtype (field f64) ${})) - - ;; NOMNL: (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) - (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) - (type ${f64} (struct_subtype (field f64) ${})) - ;; CHECK: (type ${i32_f32} (struct (field i32) (field f32))) +;; CHECK: (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) +;; NOMNL: (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) +(type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) + + ;; CHECK: (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) ;; NOMNL: (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) - ;; CHECK: (func $call-various-params-no + ;; CHECK: (func $call-various-params-no (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-no ;; CHECK-NEXT: (call $get_{}) ;; CHECK-NEXT: (call $get_{i32}) @@ -63,7 +60,7 @@ ) ;; This function is called in ways that do not allow us to alter the types of ;; its parameters (see last function). - ;; CHECK: (func $various-params-no (param $x (ref null ${})) (param $y (ref null ${})) + ;; CHECK: (func $various-params-no (type $ref?|${}|_ref?|${}|_=>_none) (param $x (ref null ${})) (param $y (ref null ${})) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -85,7 +82,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $get_{} (result (ref null ${})) + ;; CHECK: (func $get_{} (type $none_=>_ref?|${}|) (result (ref null ${})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_{} (type $none_=>_ref?|${}|) (result (ref null ${})) @@ -94,7 +91,7 @@ (func $get_{} (result (ref null ${})) (unreachable) ) - ;; CHECK: (func $get_{i32} (result (ref null ${i32})) + ;; CHECK: (func $get_{i32} (type $none_=>_ref?|${i32}|) (result (ref null ${i32})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_{i32} (type $none_=>_ref?|${i32}|) (result (ref null ${i32})) @@ -103,7 +100,7 @@ (func $get_{i32} (result (ref null ${i32})) (unreachable) ) - ;; CHECK: (func $get_{f64} (result (ref null ${f64})) + ;; CHECK: (func $get_{f64} (type $none_=>_ref?|${f64}|) (result (ref null ${f64})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_{f64} (type $none_=>_ref?|${f64}|) (result (ref null ${f64})) @@ -113,7 +110,7 @@ (unreachable) ) - ;; CHECK: (func $call-various-params-yes + ;; CHECK: (func $call-various-params-yes (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-yes ;; CHECK-NEXT: (call $get_null_{i32}) ;; CHECK-NEXT: (i32.const 0) @@ -154,7 +151,7 @@ ) ;; This function is called in ways that *do* allow us to alter the types of ;; its parameters (see last function). - ;; CHECK: (func $various-params-yes (param $x (ref null ${i32})) (param $i i32) (param $y (ref null ${i32})) + ;; CHECK: (func $various-params-yes (type $ref?|${i32}|_i32_ref?|${i32}|_=>_none) (param $x (ref null ${i32})) (param $i i32) (param $y (ref null ${i32})) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -183,7 +180,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $call-various-params-set + ;; CHECK: (func $call-various-params-set (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-set ;; CHECK-NEXT: (call $get_null_{i32}) ;; CHECK-NEXT: (call $get_null_{i32}) @@ -218,7 +215,7 @@ ;; This function is called in ways that *do* allow us to alter the types of ;; its parameters (see last function), however, we reuse the parameters by ;; writing to them, which causes problems in one case. - ;; CHECK: (func $various-params-set (param $x (ref null ${i32})) (param $y (ref null ${i32})) + ;; CHECK: (func $various-params-set (type $ref?|${i32}|_ref?|${i32}|_=>_none) (param $x (ref null ${i32})) (param $y (ref null ${i32})) ;; CHECK-NEXT: (local $2 (ref null ${})) ;; CHECK-NEXT: (local.set $2 ;; CHECK-NEXT: (local.get $x) @@ -290,7 +287,7 @@ ) ) - ;; CHECK: (func $call-various-params-tee + ;; CHECK: (func $call-various-params-tee (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-tee ;; CHECK-NEXT: (call $get_null_{i32}) ;; CHECK-NEXT: ) @@ -306,7 +303,7 @@ (call $get_null_{i32}) ) ) - ;; CHECK: (func $various-params-tee (param $x (ref null ${i32})) + ;; CHECK: (func $various-params-tee (type $ref?|${i32}|_=>_none) (param $x (ref null ${i32})) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -343,7 +340,7 @@ ) ) - ;; CHECK: (func $call-various-params-null + ;; CHECK: (func $call-various-params-null (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-null ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (ref.null none) @@ -389,7 +386,7 @@ ) ;; This function is called in ways that allow us to make the first parameter ;; non-nullable. - ;; CHECK: (func $various-params-null (param $x (ref none)) (param $y (ref null ${i32})) + ;; CHECK: (func $various-params-null (type $ref|none|_ref?|${i32}|_=>_none) (param $x (ref none)) (param $y (ref null ${i32})) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) @@ -425,7 +422,7 @@ (local.set $temp (local.get $temp)) ) - ;; CHECK: (func $call-various-params-middle + ;; CHECK: (func $call-various-params-middle (type $none_=>_none) ;; CHECK-NEXT: (call $various-params-middle ;; CHECK-NEXT: (call $get_null_{i32_i64}) ;; CHECK-NEXT: ) @@ -451,7 +448,7 @@ (call $get_null_{i32_f32}) ) ) - ;; CHECK: (func $various-params-middle (param $x (ref null ${i32})) + ;; CHECK: (func $various-params-middle (type $ref?|${i32}|_=>_none) (param $x (ref null ${i32})) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -466,7 +463,7 @@ (drop (local.get $x)) ) - ;; CHECK: (func $unused-and-refinable + ;; CHECK: (func $unused-and-refinable (type $none_=>_none) ;; CHECK-NEXT: (local $0 dataref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -486,7 +483,7 @@ ;; local). ) - ;; CHECK: (func $call-unused-and-refinable + ;; CHECK: (func $call-unused-and-refinable (type $none_=>_none) ;; CHECK-NEXT: (call $unused-and-refinable) ;; CHECK-NEXT: ) ;; NOMNL: (func $call-unused-and-refinable (type $none_=>_none) @@ -498,7 +495,7 @@ ) ) - ;; CHECK: (func $non-nullable-fixup (param $0 (ref ${})) + ;; CHECK: (func $non-nullable-fixup (type $ref|${}|_=>_none) (param $0 (ref ${})) ;; CHECK-NEXT: (local $1 dataref) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (local.get $0) @@ -525,7 +522,7 @@ ) ) - ;; CHECK: (func $call-non-nullable-fixup + ;; CHECK: (func $call-non-nullable-fixup (type $none_=>_none) ;; CHECK-NEXT: (call $non-nullable-fixup ;; CHECK-NEXT: (struct.new_default ${}) ;; CHECK-NEXT: ) @@ -541,7 +538,7 @@ ) ) - ;; CHECK: (func $call-update-null + ;; CHECK: (func $call-update-null (type $none_=>_none) ;; CHECK-NEXT: (call $update-null ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) @@ -568,7 +565,7 @@ ) ) - ;; CHECK: (func $update-null (param $x (ref null ${})) + ;; CHECK: (func $update-null (type $ref?|${}|_=>_none) (param $x (ref null ${})) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -585,7 +582,7 @@ (drop (local.get $x)) ) - ;; CHECK: (func $get_null_{i32} (result (ref null ${i32})) + ;; CHECK: (func $get_null_{i32} (type $none_=>_ref?|${i32}|) (result (ref null ${i32})) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_null_{i32} (type $none_=>_ref?|${i32}|) (result (ref null ${i32})) @@ -597,7 +594,7 @@ (ref.null ${i32}) ) - ;; CHECK: (func $get_null_{i32_i64} (result (ref null ${i32_i64})) + ;; CHECK: (func $get_null_{i32_i64} (type $none_=>_ref?|${i32_i64}|) (result (ref null ${i32_i64})) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_null_{i32_i64} (type $none_=>_ref?|${i32_i64}|) (result (ref null ${i32_i64})) @@ -607,7 +604,7 @@ (ref.null ${i32_i64}) ) - ;; CHECK: (func $get_null_{i32_f32} (result (ref null ${i32_f32})) + ;; CHECK: (func $get_null_{i32_f32} (type $none_=>_ref?|${i32_f32}|) (result (ref null ${i32_f32})) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; NOMNL: (func $get_null_{i32_f32} (type $none_=>_ref?|${i32_f32}|) (result (ref null ${i32_f32})) diff --git a/test/lit/passes/dae-gc-refine-return.wast b/test/lit/passes/dae-gc-refine-return.wast index 90084b957..0ad1bf3e1 100644 --- a/test/lit/passes/dae-gc-refine-return.wast +++ b/test/lit/passes/dae-gc-refine-return.wast @@ -3,33 +3,32 @@ ;; RUN: wasm-opt %s -all --dae --nominal -S -o - | filecheck %s --check-prefix NOMNL (module - ;; CHECK: (type $return_{} (func (result (ref ${})))) - ;; NOMNL: (type $return_{} (func_subtype (result (ref ${})) func)) - (type $return_{} (func (result (ref ${})))) - ;; CHECK: (type ${i32} (struct (field i32))) + ;; CHECK: (type ${} (struct )) + ;; NOMNL: (type $return_{} (func (result (ref ${})))) - ;; CHECK: (type ${i32_f32} (struct (field i32) (field f32))) - ;; NOMNL: (type ${} (struct_subtype data)) + ;; NOMNL: (type ${} (struct )) + (type ${} (struct)) + + ;; CHECK: (type $return_{} (func (result (ref ${})))) + (type $return_{} (func (result (ref ${})))) + ;; CHECK: (type ${i32} (struct_subtype (field i32) ${})) ;; NOMNL: (type ${i32} (struct_subtype (field i32) ${})) + (type ${i32} (struct_subtype (field i32) ${})) + ;; CHECK: (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) ;; NOMNL: (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) (type ${i32_f32} (struct_subtype (field i32) (field f32) ${i32})) - ;; CHECK: (type ${i32_i64} (struct (field i32) (field i64))) + ;; CHECK: (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) ;; NOMNL: (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) (type ${i32_i64} (struct_subtype (field i32) (field i64) ${i32})) - (type ${i32} (struct_subtype (field i32) ${})) - - ;; CHECK: (type ${} (struct )) - (type ${} (struct)) - (table 1 1 funcref) ;; We cannot refine the return type if nothing is actually returned. - ;; CHECK: (func $refine-return-no-return (result anyref) + ;; CHECK: (func $refine-return-no-return (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (call $refine-return-no-return) @@ -54,7 +53,7 @@ ) ;; We cannot refine the return type if it is already the best it can be. - ;; CHECK: (func $refine-return-no-refining (result anyref) + ;; CHECK: (func $refine-return-no-refining (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $any anyref) ;; CHECK-NEXT: (local.set $temp @@ -80,7 +79,7 @@ ) ;; Refine the return type based on the value flowing out. - ;; CHECK: (func $refine-return-flow (result i31ref) + ;; CHECK: (func $refine-return-flow (type $none_=>_i31ref) (result i31ref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local.set $temp @@ -104,7 +103,7 @@ (local.get $i31) ) - ;; CHECK: (func $call-refine-return-flow (result i31ref) + ;; CHECK: (func $call-refine-return-flow (type $none_=>_i31ref) (result i31ref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (call $call-refine-return-flow) @@ -141,7 +140,7 @@ ) ;; Refine the return type based on a return. - ;; CHECK: (func $refine-return-return (result i31ref) + ;; CHECK: (func $refine-return-return (type $none_=>_i31ref) (result i31ref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local.set $temp @@ -171,7 +170,7 @@ ) ;; Refine the return type based on multiple values. - ;; CHECK: (func $refine-return-many (result i31ref) + ;; CHECK: (func $refine-return-many (type $none_=>_i31ref) (result i31ref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local.set $temp @@ -228,7 +227,7 @@ (local.get $i31) ) - ;; CHECK: (func $refine-return-many-lub (result eqref) + ;; CHECK: (func $refine-return-many-lub (type $none_=>_eqref) (result eqref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local $data dataref) @@ -289,7 +288,7 @@ (local.get $i31) ) - ;; CHECK: (func $refine-return-many-lub-2 (result eqref) + ;; CHECK: (func $refine-return-many-lub-2 (type $none_=>_eqref) (result eqref) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local $data dataref) @@ -351,7 +350,7 @@ ) ;; We can refine the return types of tuples. - ;; CHECK: (func $refine-return-tuple (result i31ref i32) + ;; CHECK: (func $refine-return-tuple (type $none_=>_i31ref_i32) (result i31ref i32) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (local $i31 i31ref) ;; CHECK-NEXT: (local.set $temp @@ -397,7 +396,7 @@ ;; returns a ref.func of this one. They both begin by returning a funcref; ;; after refining the return type of the second function, it will have a more ;; specific type (which is ok as subtyping is allowed with tail calls). - ;; CHECK: (func $do-return-call (result funcref) + ;; CHECK: (func $do-return-call (type $none_=>_funcref) (result funcref) ;; CHECK-NEXT: (return_call $return-ref-func) ;; CHECK-NEXT: ) ;; NOMNL: (func $do-return-call (type $none_=>_funcref) (result funcref) @@ -406,7 +405,7 @@ (func $do-return-call (result funcref) (return_call $return-ref-func) ) - ;; CHECK: (func $return-ref-func (result (ref $none_=>_funcref)) + ;; CHECK: (func $return-ref-func (type $none_=>_ref|none_->_funcref|) (result (ref $none_=>_funcref)) ;; CHECK-NEXT: (ref.func $do-return-call) ;; CHECK-NEXT: ) ;; NOMNL: (func $return-ref-func (type $none_=>_ref|none_->_funcref|) (result (ref $none_=>_funcref)) @@ -418,7 +417,7 @@ ;; Show that we can optimize the return type of a function that does a tail ;; call. - ;; CHECK: (func $tail-callee (result (ref ${})) + ;; CHECK: (func $tail-callee (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $tail-callee (type $return_{}) (result (ref ${})) @@ -427,7 +426,7 @@ (func $tail-callee (result (ref ${})) (unreachable) ) - ;; CHECK: (func $tail-caller-yes (result (ref ${})) + ;; CHECK: (func $tail-caller-yes (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (return_call $tail-callee) ;; CHECK-NEXT: ) ;; NOMNL: (func $tail-caller-yes (type $return_{}) (result (ref ${})) @@ -438,7 +437,7 @@ ;; target's return type is more specific than anyref. (return_call $tail-callee) ) - ;; CHECK: (func $tail-caller-no (result anyref) + ;; CHECK: (func $tail-caller-no (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $any anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -468,7 +467,7 @@ ) (return_call $tail-callee) ) - ;; CHECK: (func $tail-call-caller + ;; CHECK: (func $tail-call-caller (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $tail-caller-yes) ;; CHECK-NEXT: ) @@ -495,7 +494,7 @@ ) ;; As above, but with an indirect tail call. - ;; CHECK: (func $tail-callee-indirect (result (ref ${})) + ;; CHECK: (func $tail-callee-indirect (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $tail-callee-indirect (type $return_{}) (result (ref ${})) @@ -504,7 +503,7 @@ (func $tail-callee-indirect (result (ref ${})) (unreachable) ) - ;; CHECK: (func $tail-caller-indirect-yes (result (ref ${})) + ;; CHECK: (func $tail-caller-indirect-yes (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (return_call_indirect $0 (type $return_{}) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -517,7 +516,7 @@ (func $tail-caller-indirect-yes (result anyref) (return_call_indirect (type $return_{}) (i32.const 0)) ) - ;; CHECK: (func $tail-caller-indirect-no (result anyref) + ;; CHECK: (func $tail-caller-indirect-no (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $any anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -549,7 +548,7 @@ ) (return_call_indirect (type $return_{}) (i32.const 0)) ) - ;; CHECK: (func $tail-call-caller-indirect + ;; CHECK: (func $tail-call-caller-indirect (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $tail-caller-indirect-yes) ;; CHECK-NEXT: ) @@ -575,7 +574,7 @@ ) ;; As above, but with a tail call by function reference. - ;; CHECK: (func $tail-callee-call_ref (result (ref ${})) + ;; CHECK: (func $tail-callee-call_ref (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $tail-callee-call_ref (type $return_{}) (result (ref ${})) @@ -584,7 +583,7 @@ (func $tail-callee-call_ref (result (ref ${})) (unreachable) ) - ;; CHECK: (func $tail-caller-call_ref-yes (result (ref ${})) + ;; CHECK: (func $tail-caller-call_ref-yes (type $return_{}) (result (ref ${})) ;; CHECK-NEXT: (local $return_{} (ref null $return_{})) ;; CHECK-NEXT: (return_call_ref $return_{} ;; CHECK-NEXT: (local.get $return_{}) @@ -601,7 +600,7 @@ (return_call_ref $return_{} (local.get $return_{})) ) - ;; CHECK: (func $tail-caller-call_ref-no (result anyref) + ;; CHECK: (func $tail-caller-call_ref-no (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $any anyref) ;; CHECK-NEXT: (local $return_{} (ref null $return_{})) ;; CHECK-NEXT: (if @@ -636,7 +635,7 @@ ) (return_call_ref $return_{} (local.get $return_{})) ) - ;; CHECK: (func $tail-caller-call_ref-unreachable (result anyref) + ;; CHECK: (func $tail-caller-call_ref-unreachable (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (unreachable) @@ -657,7 +656,7 @@ ;; should not hit an assertion on such things. (return_call_ref $return_{} (unreachable)) ) - ;; CHECK: (func $tail-call-caller-call_ref + ;; CHECK: (func $tail-call-caller-call_ref (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $tail-caller-call_ref-yes) ;; CHECK-NEXT: ) @@ -691,7 +690,7 @@ ) ) - ;; CHECK: (func $update-null (param $x i32) (param $y i32) (result (ref null ${i32})) + ;; CHECK: (func $update-null (type $i32_i32_=>_ref?|${i32}|) (param $x i32) (param $y i32) (result (ref null ${i32})) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (if @@ -739,7 +738,7 @@ ) ) - ;; CHECK: (func $call-update-null (result anyref) + ;; CHECK: (func $call-update-null (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $update-null ;; CHECK-NEXT: (i32.const 0) diff --git a/test/lit/passes/dae-gc.wast b/test/lit/passes/dae-gc.wast index d985035c4..8e55e6ec8 100644 --- a/test/lit/passes/dae-gc.wast +++ b/test/lit/passes/dae-gc.wast @@ -4,10 +4,10 @@ (module ;; CHECK: (type ${} (struct )) - ;; NOMNL: (type ${} (struct_subtype data)) + ;; NOMNL: (type ${} (struct )) (type ${} (struct)) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (call $bar) ;; CHECK-NEXT: ) ;; NOMNL: (func $foo (type $none_=>_none) @@ -20,7 +20,7 @@ ) ) ) - ;; CHECK: (func $bar + ;; CHECK: (func $bar (type $none_=>_none) ;; CHECK-NEXT: (local $0 i31ref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.tee $0 @@ -67,7 +67,7 @@ ) ;; A function that gets a non-nullable reference that is never used. We can ;; still create a non-nullable local for that parameter. - ;; CHECK: (func $get-nonnull + ;; CHECK: (func $get-nonnull (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref ${})) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -78,7 +78,7 @@ (func $get-nonnull (param $0 (ref ${})) (nop) ) - ;; CHECK: (func $send-nonnull + ;; CHECK: (func $send-nonnull (type $none_=>_none) ;; CHECK-NEXT: (call $get-nonnull) ;; CHECK-NEXT: ) ;; NOMNL: (func $send-nonnull (type $none_=>_none) @@ -93,7 +93,7 @@ ;; Test ref.func and ref.null optimization of constant parameter values. (module - ;; CHECK: (func $foo (param $0 (ref $none_=>_none)) + ;; CHECK: (func $foo (type $ref|none_->_none|_=>_none) (param $0 (ref $none_=>_none)) ;; CHECK-NEXT: (local $1 (ref $none_=>_none)) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (ref.func $a) @@ -127,7 +127,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $call-foo + ;; CHECK: (func $call-foo (type $none_=>_none) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (ref.func $b) ;; CHECK-NEXT: ) @@ -156,7 +156,7 @@ ) ) - ;; CHECK: (func $bar (param $0 i31ref) + ;; CHECK: (func $bar (type $i31ref_=>_none) (param $0 i31ref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (ref.null none) @@ -190,7 +190,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $call-bar + ;; CHECK: (func $call-bar (type $none_=>_none) ;; CHECK-NEXT: (call $bar ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) @@ -225,21 +225,21 @@ ) ;; Helper functions so we have something to take the reference of. - ;; CHECK: (func $a + ;; CHECK: (func $a (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $a (type $none_=>_none) ;; NOMNL-NEXT: (nop) ;; NOMNL-NEXT: ) (func $a) - ;; CHECK: (func $b + ;; CHECK: (func $b (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $b (type $none_=>_none) ;; NOMNL-NEXT: (nop) ;; NOMNL-NEXT: ) (func $b) - ;; CHECK: (func $c + ;; CHECK: (func $c (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $c (type $none_=>_none) diff --git a/test/lit/passes/dae_all-features.wast b/test/lit/passes/dae_all-features.wast index 4ca052835..a1a357c98 100644 --- a/test/lit/passes/dae_all-features.wast +++ b/test/lit/passes/dae_all-features.wast @@ -28,7 +28,7 @@ (export "a8" (func $a8)) (table 2 2 funcref) (elem (i32.const 0) $a9 $c8) - ;; CHECK: (func $a + ;; CHECK: (func $a (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.const 1) @@ -36,13 +36,13 @@ ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $a (param $x i32)) - ;; CHECK: (func $b + ;; CHECK: (func $b (type $none_=>_none) ;; CHECK-NEXT: (call $a) ;; CHECK-NEXT: ) (func $b (call $a (i32.const 1)) ;; best case scenario ) - ;; CHECK: (func $a1 + ;; CHECK: (func $a1 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.const 2) @@ -52,19 +52,19 @@ (func $a1 (param $x i32) (unreachable) ) - ;; CHECK: (func $b1 + ;; CHECK: (func $b1 (type $none_=>_none) ;; CHECK-NEXT: (call $a1) ;; CHECK-NEXT: ) (func $b1 (call $a1 (i32.const 2)) ;; same value in both, so works ) - ;; CHECK: (func $b11 + ;; CHECK: (func $b11 (type $none_=>_none) ;; CHECK-NEXT: (call $a1) ;; CHECK-NEXT: ) (func $b11 (call $a1 (i32.const 2)) ) - ;; CHECK: (func $a2 (param $x i32) + ;; CHECK: (func $a2 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -72,7 +72,7 @@ (func $a2 (param $x i32) (drop (local.get $x)) ) - ;; CHECK: (func $b2 + ;; CHECK: (func $b2 (type $none_=>_none) ;; CHECK-NEXT: (call $a2 ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) @@ -80,7 +80,7 @@ (func $b2 (call $a2 (i32.const 3)) ;; different value! ) - ;; CHECK: (func $b22 + ;; CHECK: (func $b22 (type $none_=>_none) ;; CHECK-NEXT: (call $a2 ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) @@ -88,7 +88,7 @@ (func $b22 (call $a2 (i32.const 4)) ) - ;; CHECK: (func $a3 + ;; CHECK: (func $a3 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const -1) @@ -97,24 +97,24 @@ (func $a3 (param $x i32) (drop (i32.const -1)) ;; diff value, but at least unused, so no need to send ) - ;; CHECK: (func $b3 + ;; CHECK: (func $b3 (type $none_=>_none) ;; CHECK-NEXT: (call $a3) ;; CHECK-NEXT: ) (func $b3 (call $a3 (i32.const 3)) ) - ;; CHECK: (func $b33 + ;; CHECK: (func $b33 (type $none_=>_none) ;; CHECK-NEXT: (call $a3) ;; CHECK-NEXT: ) (func $b33 (call $a3 (i32.const 4)) ) - ;; CHECK: (func $a4 (param $x i32) + ;; CHECK: (func $a4 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $a4 (param $x i32) ;; diff value, but with effects ) - ;; CHECK: (func $b4 + ;; CHECK: (func $b4 (type $none_=>_none) ;; CHECK-NEXT: (call $a4 ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -122,7 +122,7 @@ (func $b4 (call $a4 (unreachable)) ) - ;; CHECK: (func $b43 + ;; CHECK: (func $b43 (type $none_=>_none) ;; CHECK-NEXT: (call $a4 ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) @@ -130,7 +130,7 @@ (func $b43 (call $a4 (i32.const 4)) ) - ;; CHECK: (func $a5 + ;; CHECK: (func $a5 (type $none_=>_none) ;; CHECK-NEXT: (local $0 f64) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local.set $0 @@ -154,13 +154,13 @@ (drop (local.get $x)) (drop (local.get $y)) ) - ;; CHECK: (func $b5 + ;; CHECK: (func $b5 (type $none_=>_none) ;; CHECK-NEXT: (call $a5) ;; CHECK-NEXT: ) (func $b5 (call $a5 (i32.const 1) (f64.const 3.14159)) ) - ;; CHECK: (func $a6 (param $0 i32) + ;; CHECK: (func $a6 (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (f64.const 3.14159) @@ -178,7 +178,7 @@ (drop (local.get $x)) (drop (local.get $y)) ) - ;; CHECK: (func $b6 + ;; CHECK: (func $b6 (type $none_=>_none) ;; CHECK-NEXT: (call $a6 ;; CHECK-NEXT: (call $get-i32) ;; CHECK-NEXT: ) @@ -186,7 +186,7 @@ (func $b6 (call $a6 (call $get-i32) (f64.const 3.14159)) ) - ;; CHECK: (func $a7 (param $0 f64) + ;; CHECK: (func $a7 (type $f64_=>_none) (param $0 f64) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (i32.const 1) @@ -204,7 +204,7 @@ (drop (local.get $x)) (drop (local.get $y)) ) - ;; CHECK: (func $b7 + ;; CHECK: (func $b7 (type $none_=>_none) ;; CHECK-NEXT: (call $a7 ;; CHECK-NEXT: (call $get-f64) ;; CHECK-NEXT: ) @@ -212,11 +212,11 @@ (func $b7 (call $a7 (i32.const 1) (call $get-f64)) ) - ;; CHECK: (func $a8 (param $x i32) + ;; CHECK: (func $a8 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $a8 (param $x i32)) ;; exported, do not optimize - ;; CHECK: (func $b8 + ;; CHECK: (func $b8 (type $none_=>_none) ;; CHECK-NEXT: (call $a8 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -224,11 +224,11 @@ (func $b8 (call $a8 (i32.const 1)) ) - ;; CHECK: (func $a9 (param $x i32) + ;; CHECK: (func $a9 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $a9 (param $x i32)) ;; tabled, do not optimize - ;; CHECK: (func $b9 + ;; CHECK: (func $b9 (type $none_=>_none) ;; CHECK-NEXT: (call $a9 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -236,7 +236,7 @@ (func $b9 (call $a9 (i32.const 1)) ) - ;; CHECK: (func $a10 + ;; CHECK: (func $a10 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.const 1) @@ -250,7 +250,7 @@ (call $a10 (i32.const 1)) (call $a10 (i32.const 1)) ) - ;; CHECK: (func $a11 + ;; CHECK: (func $a11 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (call $a11) ;; CHECK-NEXT: (call $a11) @@ -259,7 +259,7 @@ (call $a11 (i32.const 1)) (call $a11 (i32.const 2)) ) - ;; CHECK: (func $a12 (param $x i32) + ;; CHECK: (func $a12 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -276,7 +276,7 @@ (call $a12 (i32.const 2)) ) ;; return values - ;; CHECK: (func $c1 + ;; CHECK: (func $c1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (call $c2) ;; CHECK-NEXT: (call $c3) @@ -308,7 +308,7 @@ (drop (call $c7)) (drop (call $c8)) ) - ;; CHECK: (func $c2 + ;; CHECK: (func $c2 (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -316,7 +316,7 @@ (func $c2 (result i32) (i32.const 1) ) - ;; CHECK: (func $c3 + ;; CHECK: (func $c3 (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) @@ -324,13 +324,13 @@ (func $c3 (result i32) (i32.const 2) ) - ;; CHECK: (func $c4 (result i32) + ;; CHECK: (func $c4 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) (func $c4 (result i32) (i32.const 3) ) - ;; CHECK: (func $c5 (param $x i32) + ;; CHECK: (func $c5 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -338,13 +338,13 @@ (func $c5 (param $x i32) (result i32) (local.get $x) ) - ;; CHECK: (func $c6 + ;; CHECK: (func $c6 (type $none_=>_none) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $c6 (result i32) (unreachable) ) - ;; CHECK: (func $c7 + ;; CHECK: (func $c7 (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) @@ -353,7 +353,7 @@ (func $c7 (result i32) (return (i32.const 4)) ) - ;; CHECK: (func $c8 (result i32) + ;; CHECK: (func $c8 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 5) ;; CHECK-NEXT: ) (func $c8 (result i32) @@ -372,11 +372,11 @@ ;; CHECK: (export "a" (func $0)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (call $b) ;; CHECK-NEXT: ) - ;; CHECK: (func $b + ;; CHECK: (func $b (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) @@ -396,7 +396,7 @@ ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (func $foo (param $x i32) (result i32) + ;; CHECK: (func $foo (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (return_call $bar) ;; CHECK-NEXT: ) @@ -410,7 +410,7 @@ ) (i32.const 42) ) - ;; CHECK: (func $bar (result i32) + ;; CHECK: (func $bar (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.const 0) @@ -429,7 +429,7 @@ ;; CHECK: (table $0 1 1 funcref) - ;; CHECK: (func $foo (result i32) + ;; CHECK: (func $foo (type $T) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.const 42) @@ -447,7 +447,7 @@ ) ) ) - ;; CHECK: (func $bar + ;; CHECK: (func $bar (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $foo) ;; CHECK-NEXT: ) @@ -469,7 +469,7 @@ ;; CHECK: (export "export" (func $1)) - ;; CHECK: (func $0 (param $0 funcref) (param $1 i32) (param $2 f64) (result i64) + ;; CHECK: (func $0 (type $funcref_i32_f64_=>_i64) (param $0 funcref) (param $1 i32) (param $2 f64) (result i64) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -483,7 +483,7 @@ (ref.func $0) ) ) -;; CHECK: (func $1 (param $0 f32) (result funcref) +;; CHECK: (func $1 (type $f32_=>_funcref) (param $0 f32) (result funcref) ;; CHECK-NEXT: (ref.func $0) ;; CHECK-NEXT: ) (module @@ -497,13 +497,13 @@ (export "even" (func $1)) ;; the argument to this function cannot be removed due to the ref.func of it ;; in a global - ;; CHECK: (func $0 (param $0 i64) + ;; CHECK: (func $0 (type $i64) (param $0 i64) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $0 (param $0 i64) (unreachable) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (call_ref $i64 ;; CHECK-NEXT: (i64.const 0) ;; CHECK-NEXT: (global.get $global$0) @@ -515,7 +515,7 @@ (global.get $global$0) ) ) - ;; CHECK: (func $2 + ;; CHECK: (func $2 (type $none_=>_none) ;; CHECK-NEXT: (call $0 ;; CHECK-NEXT: (i64.const 0) ;; CHECK-NEXT: ) @@ -530,14 +530,14 @@ ;; a removable non-nullable parameter ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (local $0 i31ref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $0 (param $x i31ref) (nop) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (call $0) ;; CHECK-NEXT: ) (func $1 @@ -565,7 +565,7 @@ ;; CHECK: (global $mut (mut i32) (i32.const 1337)) (global $mut (mut i32) (i32.const 1337)) - ;; CHECK: (func $foo (param $0 i32) + ;; CHECK: (func $foo (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (global.get $immut) @@ -585,7 +585,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $foo-caller + ;; CHECK: (func $foo-caller (type $none_=>_none) ;; CHECK-NEXT: (global.set $mut ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -615,7 +615,7 @@ ) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $i32_i32_=>_none) (param $x i32) (param $y i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -628,7 +628,7 @@ (drop (local.get $y)) ) - ;; CHECK: (func $bar-caller + ;; CHECK: (func $bar-caller (type $none_=>_none) ;; CHECK-NEXT: (global.set $mut ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/dae_tnh.wast b/test/lit/passes/dae_tnh.wast index e8163150d..40a750e2e 100644 --- a/test/lit/passes/dae_tnh.wast +++ b/test/lit/passes/dae_tnh.wast @@ -5,12 +5,12 @@ (module ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) - ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct_subtype (field i32) data)) - ;; CHECK: (func $target + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) + + ;; CHECK: (func $target (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -18,7 +18,7 @@ (nop) ) - ;; CHECK: (func $caller (param $ref (ref null $struct)) + ;; CHECK: (func $caller (type $ref?|$struct|_=>_none) (param $ref (ref null $struct)) ;; CHECK-NEXT: (call $target) ;; CHECK-NEXT: ) (func $caller (param $ref (ref null $struct)) @@ -38,7 +38,7 @@ ;; CHECK: (type $i32_=>_none (func (param i32))) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $target ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -52,7 +52,7 @@ ) ) - ;; CHECK: (func $target (param $0 i32) + ;; CHECK: (func $target (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $target (param i32) @@ -64,7 +64,7 @@ (module ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (return_call $target) ;; CHECK-NEXT: ) (func $caller @@ -73,7 +73,7 @@ ) ) - ;; CHECK: (func $target + ;; CHECK: (func $target (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -86,7 +86,7 @@ ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $target (param $0 i32) + ;; CHECK: (func $target (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (f64.const 4.2) @@ -102,7 +102,7 @@ ) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $target ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/dce-eh.wast b/test/lit/passes/dce-eh.wast index 336246225..28a4bc649 100644 --- a/test/lit/passes/dce-eh.wast +++ b/test/lit/passes/dce-eh.wast @@ -6,14 +6,14 @@ (module ;; CHECK: (tag $e (param)) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo) (tag $e) - ;; CHECK: (func $try_unreachable + ;; CHECK: (func $try_unreachable (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (unreachable) @@ -34,7 +34,7 @@ (call $foo) ;; shouldn't be dce'd ) - ;; CHECK: (func $catch_unreachable + ;; CHECK: (func $catch_unreachable (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -55,7 +55,7 @@ (call $foo) ;; shouldn't be dce'd ) - ;; CHECK: (func $both_unreachable + ;; CHECK: (func $both_unreachable (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (unreachable) @@ -77,7 +77,7 @@ (call $foo) ;; should be dce'd ) - ;; CHECK: (func $throw + ;; CHECK: (func $throw (type $none_=>_none) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $label$1 ;; CHECK-NEXT: (throw $e) @@ -101,7 +101,7 @@ ) ) - ;; CHECK: (func $rethrow + ;; CHECK: (func $rethrow (type $none_=>_none) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/dce_all-features.wast b/test/lit/passes/dce_all-features.wast index 03b90cc38..8566b86f0 100644 --- a/test/lit/passes/dce_all-features.wast +++ b/test/lit/passes/dce_all-features.wast @@ -30,13 +30,13 @@ ;; CHECK: (elem (i32.const 0) $call-me) - ;; CHECK: (func $call-me (param $0 i32) (param $1 i32) + ;; CHECK: (func $call-me (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $call-me (type $ii) (param $0 i32) (param $1 i32) (nop) ) - ;; CHECK: (func $code-to-kill + ;; CHECK: (func $code-to-kill (type $1) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (br $out) @@ -672,7 +672,7 @@ (i32.const 1337) ) ) - ;; CHECK: (func $killer + ;; CHECK: (func $killer (type $1) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $killer (type $1) @@ -681,7 +681,7 @@ (i32.const 1000) ) ) - ;; CHECK: (func $target + ;; CHECK: (func $target (type $1) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 2000) ;; CHECK-NEXT: ) @@ -691,7 +691,7 @@ (i32.const 2000) ) ) - ;; CHECK: (func $typed-block-none-then-unreachable (result i32) + ;; CHECK: (func $typed-block-none-then-unreachable (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $top-typed ;; CHECK-NEXT: (block $switch$0 ;; CHECK-NEXT: (return @@ -713,7 +713,7 @@ ) ) ) - ;; CHECK: (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32) + ;; CHECK: (func $typed-block-remove-br-changes-type (type $i32_=>_i32) (param $$$0 i32) (result i32) ;; CHECK-NEXT: (block $switch$7 ;; CHECK-NEXT: (block $switch-default$10 ;; CHECK-NEXT: (block $switch-case$9 @@ -755,7 +755,7 @@ (i32.const 0) ) ) - ;; CHECK: (func $global + ;; CHECK: (func $global (type $1) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $global @@ -763,7 +763,7 @@ (drop (global.get $x)) (global.set $x (i32.const 1)) ) - ;; CHECK: (func $ret (result i32) + ;; CHECK: (func $ret (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (return ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -775,7 +775,7 @@ (nop) (i32.const 0) ) - ;; CHECK: (func $unreachable-br (result i32) + ;; CHECK: (func $unreachable-br (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $out (result i32) ;; CHECK-NEXT: (br $out ;; CHECK-NEXT: (i32.const 0) @@ -789,7 +789,7 @@ ) ) ) - ;; CHECK: (func $unreachable-br-loop (result i32) + ;; CHECK: (func $unreachable-br-loop (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (loop $out ;; CHECK-NEXT: (br $out) ;; CHECK-NEXT: ) @@ -799,7 +799,7 @@ (br $out) ) ) - ;; CHECK: (func $unreachable-block-ends-switch (result i32) + ;; CHECK: (func $unreachable-block-ends-switch (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $label$3 ;; CHECK-NEXT: (nop) @@ -819,7 +819,7 @@ (i32.const 19) ) ) - ;; CHECK: (func $unreachable-block-ends-br_if (result i32) + ;; CHECK: (func $unreachable-block-ends-br_if (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $label$2 ;; CHECK-NEXT: (nop) @@ -839,7 +839,7 @@ (i32.const 19) ) ) - ;; CHECK: (func $unreachable-brs-3 (result i32) + ;; CHECK: (func $unreachable-brs-3 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $label$0 (result i32) ;; CHECK-NEXT: (br $label$0 ;; CHECK-NEXT: (i32.const 18) @@ -858,7 +858,7 @@ (i32.const 21) ) ) - ;; CHECK: (func $unreachable-brs-4 (param $var$0 i32) (result i32) + ;; CHECK: (func $unreachable-brs-4 (type $i32_=>_i32) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -892,7 +892,7 @@ ) ) ) - ;; CHECK: (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64) + ;; CHECK: (func $call-unreach (type $i64_i64_=>_i64) (param $var$0 i64) (param $var$1 i64) (result i64) ;; CHECK-NEXT: (local $2 i64) ;; CHECK-NEXT: (if (result i64) ;; CHECK-NEXT: (i64.eqz @@ -954,7 +954,7 @@ ) ) ) - ;; CHECK: (func $br-gone-means-block-type-changes-then-refinalize-at-end-is-too-late (param $var$0 i32) (result i32) + ;; CHECK: (func $br-gone-means-block-type-changes-then-refinalize-at-end-is-too-late (type $i32_=>_i32) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) @@ -978,7 +978,7 @@ ) ) ) - ;; CHECK: (func $br-with-unreachable-value-should-not-give-a-block-a-value (param $var$0 i32) (result i32) + ;; CHECK: (func $br-with-unreachable-value-should-not-give-a-block-a-value (type $i32_=>_i32) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (block $label$0 (result i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop @@ -1007,7 +1007,7 @@ (i32.const 16) ) ) - ;; CHECK: (func $replace-br-value-of-i32-with-unreachable (result i32) + ;; CHECK: (func $replace-br-value-of-i32-with-unreachable (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $label$1 ;; CHECK-NEXT: (nop) @@ -1025,7 +1025,7 @@ ) ) ) - ;; CHECK: (func $shorten-block-requires-sync-refinalize (param $var$0 i32) (param $var$1 i32) + ;; CHECK: (func $shorten-block-requires-sync-refinalize (type $ii) (param $var$0 i32) (param $var$1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $shorten-block-requires-sync-refinalize (param $var$0 i32) (param $var$1 i32) @@ -1039,7 +1039,7 @@ ) ) ) - ;; CHECK: (func $block-with-type-but-is-unreachable (param $var$0 i32) (result i32) + ;; CHECK: (func $block-with-type-but-is-unreachable (type $i32_=>_i32) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $block ;; CHECK-NEXT: (nop) @@ -1057,7 +1057,7 @@ ) ) ) - ;; CHECK: (func $if-with-type-but-is-unreachable (param $var$0 i32) (result i32) + ;; CHECK: (func $if-with-type-but-is-unreachable (type $i32_=>_i32) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $var$0) @@ -1077,7 +1077,7 @@ ) ) ) - ;; CHECK: (func $unreachable-loop + ;; CHECK: (func $unreachable-loop (type $1) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $unreachable-loop @@ -1086,7 +1086,7 @@ (br $label$2) ) ) - ;; CHECK: (func $br-block-from-unary (result i32) + ;; CHECK: (func $br-block-from-unary (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $label$6 (result i32) ;; CHECK-NEXT: (block $label$7 ;; CHECK-NEXT: (br $label$6 @@ -1106,7 +1106,7 @@ ) ) ) - ;; CHECK: (func $replace-unary-with-br-child + ;; CHECK: (func $replace-unary-with-br-child (type $1) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $label$6 (result i32) ;; CHECK-NEXT: (br $label$6 @@ -1126,7 +1126,7 @@ ) ) ) - ;; CHECK: (func $br_if-unreach-then-br_if-normal + ;; CHECK: (func $br_if-unreach-then-br_if-normal (type $1) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (unreachable) @@ -1143,7 +1143,7 @@ ) ) ) - ;; CHECK: (func $replace-with-unreachable-affects-parent (param $var$0 f32) (param $var$1 i64) + ;; CHECK: (func $replace-with-unreachable-affects-parent (type $f32_i64_=>_none) (param $var$0 f32) (param $var$1 i64) ;; CHECK-NEXT: (block $top ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop @@ -1186,7 +1186,7 @@ (nop) ;; this is not reachable due to the above code, so we replace it with unreachable. type should go to parent ) ) - ;; CHECK: (func $replace-block-changes-later-when-if-goes + ;; CHECK: (func $replace-block-changes-later-when-if-goes (type $1) ;; CHECK-NEXT: (block $top ;; CHECK-NEXT: (global.set $x ;; CHECK-NEXT: (i32.const 0) @@ -1232,7 +1232,7 @@ ) ) ) - ;; CHECK: (func $helper (param $var$0 f32) (param $var$1 i64) (result i32) + ;; CHECK: (func $helper (type $f32_i64_=>_i32) (param $var$0 f32) (param $var$1 i64) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) (func $helper (param $var$0 f32) (param $var$1 i64) (result i32) @@ -1245,7 +1245,7 @@ ;; CHECK: (global $global (mut f64) (f64.const 0)) (global $global (mut f64) (f64.const 0)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (unreachable) @@ -1265,7 +1265,7 @@ (module ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (local $local f64) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) @@ -1290,7 +1290,7 @@ ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $unnecessary-concrete-block (result i32) + ;; CHECK: (func $unnecessary-concrete-block (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $foo ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (unreachable) @@ -1302,7 +1302,7 @@ (unreachable) ) ) - ;; CHECK: (func $necessary-concrete-block (result i32) + ;; CHECK: (func $necessary-concrete-block (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $foo (result i32) ;; CHECK-NEXT: (br $foo ;; CHECK-NEXT: (i32.const 1) @@ -1315,7 +1315,7 @@ (unreachable) ) ) - ;; CHECK: (func $unnecessary-concrete-if (result i32) + ;; CHECK: (func $unnecessary-concrete-if (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (return @@ -1331,7 +1331,7 @@ (unreachable) ) ) - ;; CHECK: (func $unnecessary-concrete-try (result i32) + ;; CHECK: (func $unnecessary-concrete-try (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (unreachable) @@ -1351,7 +1351,7 @@ ) ) ) - ;; CHECK: (func $note-loss-of-if-children + ;; CHECK: (func $note-loss-of-if-children (type $none_=>_none) ;; CHECK-NEXT: (block $label$1 ;; CHECK-NEXT: (block $label$2 ;; CHECK-NEXT: (nop) @@ -1373,7 +1373,7 @@ ) ) ) - ;; CHECK: (func $note-loss-of-non-control-flow-children + ;; CHECK: (func $note-loss-of-non-control-flow-children (type $none_=>_none) ;; CHECK-NEXT: (block $out ;; CHECK-NEXT: (block ;; CHECK-NEXT: (nop) @@ -1398,7 +1398,7 @@ (module ;; CHECK: (type $none_=>_ref|any| (func (result (ref any)))) - ;; CHECK: (func $foo (result (ref any)) + ;; CHECK: (func $foo (type $none_=>_ref|any|) (result (ref any)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $foo (result (ref any)) diff --git a/test/lit/passes/directize_all-features.wast b/test/lit/passes/directize_all-features.wast index 51e2dab44..d4d797997 100644 --- a/test/lit/passes/directize_all-features.wast +++ b/test/lit/passes/directize_all-features.wast @@ -16,12 +16,12 @@ ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) @@ -29,13 +29,13 @@ (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -70,35 +70,35 @@ ;; CHECK: (elem $1 (table $1) (i32.const 1) func $f) - ;; CHECK: (func $dummy (param $0 i32) (result i32) + ;; CHECK: (func $dummy (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) ;; IMMUT: (elem $0 (table $0) (i32.const 1) func $dummy) ;; IMMUT: (elem $1 (table $1) (i32.const 1) func $f) - ;; IMMUT: (func $dummy (param $0 i32) (result i32) + ;; IMMUT: (func $dummy (type $i32_=>_i32) (param $0 i32) (result i32) ;; IMMUT-NEXT: (local.get $0) ;; IMMUT-NEXT: ) (func $dummy (param i32) (result i32) (local.get 0) ) - ;; CHECK: (func $f (param $0 i32) (param $1 i32) + ;; CHECK: (func $f (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $f (param $0 i32) (param $1 i32) + ;; IMMUT: (func $f (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $f (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $g (param $x i32) (param $y i32) + ;; CHECK: (func $g (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $f ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $g (param $x i32) (param $y i32) + ;; IMMUT: (func $g (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $f ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -127,24 +127,24 @@ (elem (table $1) (i32.const 4) func $foo) ;; CHECK: (elem (table $1) (i32.const 4) func $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (table $1) (i32.const 4) func $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -169,24 +169,24 @@ (elem (i32.const 0) $foo) ;; CHECK: (elem (i32.const 0) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 0) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -217,26 +217,26 @@ ;; CHECK: (elem $1 (table $1) (i32.const 0) func $foo $foo $foo $foo $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem $0 (table $0) (i32.const 0) func $foo $foo $foo $foo $foo) ;; IMMUT: (elem $1 (table $1) (i32.const 0) func $foo $foo $foo $foo $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -262,25 +262,25 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $table (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -294,14 +294,14 @@ ) ) - ;; CHECK: (func $out-of-bounds (param $x i32) (param $y i32) + ;; CHECK: (func $out-of-bounds (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $table (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.const 999) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $out-of-bounds (param $x i32) (param $y i32) + ;; IMMUT: (func $out-of-bounds (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call_indirect $table (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -336,23 +336,23 @@ ;; IMMUT: (export "tab" (table $0)) (export "tab" (table $0)) (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -383,25 +383,25 @@ (elem (global.get $g) $foo) ;; CHECK: (elem (global.get $g) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (global.get $g) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -435,25 +435,25 @@ (elem (table $1) (global.get $g) func $foo) ;; CHECK: (elem (table $1) (global.get $g) func $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (table $1) (global.get $g) func $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $1 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (call_indirect $1 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -484,25 +484,25 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $bar (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (local.get $z) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $bar (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -529,18 +529,18 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) @@ -551,7 +551,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (drop ;; IMMUT-NEXT: (local.get $x) @@ -582,18 +582,18 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) @@ -604,7 +604,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (drop ;; IMMUT-NEXT: (local.get $x) @@ -639,18 +639,18 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) + ;; CHECK: (func $foo (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) + ;; IMMUT: (func $foo (type $i32_=>_none) (param $0 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) @@ -661,7 +661,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (drop ;; IMMUT-NEXT: (local.get $x) @@ -685,12 +685,12 @@ (module ;; CHECK: (type $i32_=>_none (func (param i32))) - ;; CHECK: (func $foo (param $0 i32) + ;; CHECK: (func $foo (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (type $i32_=>_none (func (param i32))) - ;; IMMUT: (func $foo (param $0 i32) + ;; IMMUT: (func $foo (type $i32_=>_none) (param $0 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) @@ -708,7 +708,7 @@ ;; IMMUT: (table $0 8 8 funcref) (table $0 8 8 funcref) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block @@ -716,7 +716,7 @@ ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $0 + ;; IMMUT: (func $0 (type $none_=>_none) ;; IMMUT-NEXT: (nop) ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (block @@ -744,24 +744,24 @@ (elem (i32.const 1) $foo) ;; CHECK: (elem (i32.const 1) $foo) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo) - ;; IMMUT: (func $foo (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (return_call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (return_call $foo ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -797,27 +797,27 @@ (elem (i32.const 1) $foo1 $foo2) ;; CHECK: (elem (i32.const 1) $foo1 $foo2) - ;; CHECK: (func $foo1 (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo1 (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 1) $foo1 $foo2) - ;; IMMUT: (func $foo1 (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo1 (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo1 (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $foo2 (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo2 (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $foo2 (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo2 (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo2 (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $select (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (local.set $3 @@ -838,7 +838,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (local $3 i32) ;; IMMUT-NEXT: (local $4 i32) ;; IMMUT-NEXT: (local.set $3 @@ -872,7 +872,7 @@ ) ) ) - ;; CHECK: (func $select-bad-1 (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-bad-1 (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -883,7 +883,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-bad-1 (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-bad-1 (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -906,7 +906,7 @@ ) ) ) - ;; CHECK: (func $select-bad-2 (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-bad-2 (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -917,7 +917,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-bad-2 (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-bad-2 (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -940,7 +940,7 @@ ) ) ) - ;; CHECK: (func $select-out-of-range (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-out-of-range (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (local.set $3 @@ -958,7 +958,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-out-of-range (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-out-of-range (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (local $3 i32) ;; IMMUT-NEXT: (local $4 i32) ;; IMMUT-NEXT: (local.set $3 @@ -989,7 +989,7 @@ ) ) ) - ;; CHECK: (func $select-both-out-of-range (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-both-out-of-range (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (local.set $3 @@ -1004,7 +1004,7 @@ ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-both-out-of-range (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-both-out-of-range (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (local $3 i32) ;; IMMUT-NEXT: (local $4 i32) ;; IMMUT-NEXT: (local.set $3 @@ -1031,7 +1031,7 @@ ) ) ) - ;; CHECK: (func $select-unreachable-operand (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-unreachable-operand (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -1042,7 +1042,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-unreachable-operand (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-unreachable-operand (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -1065,7 +1065,7 @@ ) ) ) - ;; CHECK: (func $select-unreachable-condition (param $x i32) (param $y i32) (param $z i32) + ;; CHECK: (func $select-unreachable-condition (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; CHECK-NEXT: (call_indirect $0 (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -1076,7 +1076,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-unreachable-condition (param $x i32) (param $y i32) (param $z i32) + ;; IMMUT: (func $select-unreachable-condition (type $i32_i32_i32_=>_none) (param $x i32) (param $y i32) (param $z i32) ;; IMMUT-NEXT: (call_indirect $0 (type $ii) ;; IMMUT-NEXT: (local.get $x) ;; IMMUT-NEXT: (local.get $y) @@ -1100,14 +1100,14 @@ ) ) ) - ;; CHECK: (func $select-bad-type (param $z i32) + ;; CHECK: (func $select-bad-type (type $i32_=>_none) (param $z i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $z) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-bad-type (param $z i32) + ;; IMMUT: (func $select-bad-type (type $i32_=>_none) (param $z i32) ;; IMMUT-NEXT: (if ;; IMMUT-NEXT: (local.get $z) ;; IMMUT-NEXT: (unreachable) @@ -1150,14 +1150,14 @@ ;; CHECK: (elem declare func $select-non-nullable) - ;; CHECK: (func $foo-ref (param $0 (ref func)) + ;; CHECK: (func $foo-ref (type $F) (param $0 (ref func)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem (i32.const 10) $foo-ref $foo-ref) ;; IMMUT: (elem declare func $select-non-nullable) - ;; IMMUT: (func $foo-ref (param $0 (ref func)) + ;; IMMUT: (func $foo-ref (type $F) (param $0 (ref func)) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo-ref (param (ref func)) @@ -1165,7 +1165,7 @@ (unreachable) ) - ;; CHECK: (func $select-non-nullable (param $x i32) + ;; CHECK: (func $select-non-nullable (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $1 (ref $i32_=>_none)) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (ref.func $select-non-nullable) @@ -1180,7 +1180,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-non-nullable (param $x i32) + ;; IMMUT: (func $select-non-nullable (type $i32_=>_none) (param $x i32) ;; IMMUT-NEXT: (local $1 (ref $i32_=>_none)) ;; IMMUT-NEXT: (local.set $1 ;; IMMUT-NEXT: (ref.func $select-non-nullable) @@ -1209,7 +1209,7 @@ ) ) - ;; CHECK: (func $select-non-nullable-unreachable-condition + ;; CHECK: (func $select-non-nullable-unreachable-condition (type $none_=>_none) ;; CHECK-NEXT: (call_indirect $0 (type $F) ;; CHECK-NEXT: (ref.func $select-non-nullable) ;; CHECK-NEXT: (select @@ -1219,7 +1219,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-non-nullable-unreachable-condition + ;; IMMUT: (func $select-non-nullable-unreachable-condition (type $none_=>_none) ;; IMMUT-NEXT: (call_indirect $0 (type $F) ;; IMMUT-NEXT: (ref.func $select-non-nullable) ;; IMMUT-NEXT: (select @@ -1242,7 +1242,7 @@ ) ) - ;; CHECK: (func $select-non-nullable-unreachable-arm + ;; CHECK: (func $select-non-nullable-unreachable-arm (type $none_=>_none) ;; CHECK-NEXT: (call_indirect $0 (type $F) ;; CHECK-NEXT: (ref.func $select-non-nullable) ;; CHECK-NEXT: (select @@ -1252,7 +1252,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-non-nullable-unreachable-arm + ;; IMMUT: (func $select-non-nullable-unreachable-arm (type $none_=>_none) ;; IMMUT-NEXT: (call_indirect $0 (type $F) ;; IMMUT-NEXT: (ref.func $select-non-nullable) ;; IMMUT-NEXT: (select @@ -1278,7 +1278,7 @@ ) ) - ;; CHECK: (func $select-non-nullable-unreachable-arg (param $x i32) + ;; CHECK: (func $select-non-nullable-unreachable-arg (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (call_indirect $0 (type $F) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (select @@ -1288,7 +1288,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $select-non-nullable-unreachable-arg (param $x i32) + ;; IMMUT: (func $select-non-nullable-unreachable-arg (type $i32_=>_none) (param $x i32) ;; IMMUT-NEXT: (call_indirect $0 (type $F) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: (select @@ -1334,13 +1334,13 @@ ;; IMMUT: (elem $1 (table $no-set) (i32.const 1) func $foo) (elem $1 (table $no-set) (i32.const 1) $foo) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $v) ;; CHECK-NEXT: (table.set $has-set ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (ref.func $foo) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $foo + ;; IMMUT: (func $foo (type $v) ;; IMMUT-NEXT: (table.set $has-set ;; IMMUT-NEXT: (i32.const 1) ;; IMMUT-NEXT: (ref.func $foo) @@ -1355,13 +1355,13 @@ ) ) - ;; CHECK: (func $bar + ;; CHECK: (func $bar (type $v) ;; CHECK-NEXT: (call_indirect $has-set (type $v) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (call $foo) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar + ;; IMMUT: (func $bar (type $v) ;; IMMUT-NEXT: (call $foo) ;; IMMUT-NEXT: (call $foo) ;; IMMUT-NEXT: ) @@ -1393,30 +1393,30 @@ ;; CHECK: (elem $1 (i32.const 3) $foo2) - ;; CHECK: (func $foo1 (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo1 (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; IMMUT: (elem $0 (i32.const 1) $foo1) ;; IMMUT: (elem $1 (i32.const 3) $foo2) - ;; IMMUT: (func $foo1 (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo1 (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo1 (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $foo2 (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo2 (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) - ;; IMMUT: (func $foo2 (param $0 i32) (param $1 i32) + ;; IMMUT: (func $foo2 (type $ii) (param $0 i32) (param $1 i32) ;; IMMUT-NEXT: (unreachable) ;; IMMUT-NEXT: ) (func $foo2 (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $x i32) (param $y i32) + ;; CHECK: (func $bar (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call_indirect $table (type $ii) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -1443,7 +1443,7 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; IMMUT: (func $bar (param $x i32) (param $y i32) + ;; IMMUT: (func $bar (type $ii) (param $x i32) (param $y i32) ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (block ;; IMMUT-NEXT: (drop diff --git a/test/lit/passes/flatten-eh.wast b/test/lit/passes/flatten-eh.wast index 1d3906511..f91d875a5 100644 --- a/test/lit/passes/flatten-eh.wast +++ b/test/lit/passes/flatten-eh.wast @@ -7,7 +7,7 @@ ;; CHECK: (tag $e-f32 (param f32)) (tag $e-f32 (param f32)) - ;; CHECK: (func $try_catch + ;; CHECK: (func $try_catch (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f32) @@ -55,7 +55,7 @@ ) ) - ;; CHECK: (func $try_catch_pop_fixup + ;; CHECK: (func $try_catch_pop_fixup (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $l0 @@ -101,7 +101,7 @@ ) ) - ;; CHECK: (func $try_catch_return_value (result i32) + ;; CHECK: (func $try_catch_return_value (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -138,7 +138,7 @@ ) ) - ;; CHECK: (func $try_unreachable (result i32) + ;; CHECK: (func $try_unreachable (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -174,7 +174,7 @@ ) ) - ;; CHECK: (func $catch_unreachable (result i32) + ;; CHECK: (func $catch_unreachable (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) diff --git a/test/lit/passes/flatten.wast b/test/lit/passes/flatten.wast index 0446f3ce1..7b90068bf 100644 --- a/test/lit/passes/flatten.wast +++ b/test/lit/passes/flatten.wast @@ -4,7 +4,7 @@ (module ;; CHECK: (type $simplefunc (func)) (type $simplefunc (func)) - ;; CHECK: (func $0 (param $0 (ref $simplefunc)) (result (ref $simplefunc)) + ;; CHECK: (func $0 (type $ref|$simplefunc|_=>_ref|$simplefunc|) (param $0 (ref $simplefunc)) (result (ref $simplefunc)) ;; CHECK-NEXT: (local $1 (ref $simplefunc)) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (local.get $0) diff --git a/test/lit/passes/flatten_all-features.wast b/test/lit/passes/flatten_all-features.wast index 7daf00914..9667f23df 100644 --- a/test/lit/passes/flatten_all-features.wast +++ b/test/lit/passes/flatten_all-features.wast @@ -30,7 +30,7 @@ ;; CHECK: (elem (i32.const 0) $call-me) - ;; CHECK: (func $a1 + ;; CHECK: (func $a1 (type $1) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.add @@ -45,7 +45,7 @@ (func $a1 (drop (i32.add (i32.const 0) (i32.const 1))) ) - ;; CHECK: (func $a2 (result i32) + ;; CHECK: (func $a2 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (i32.add @@ -60,7 +60,7 @@ (func $a2 (result i32) (i32.add (i32.const 0) (i32.const 1)) ) - ;; CHECK: (func $a3 (result i32) + ;; CHECK: (func $a3 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -90,7 +90,7 @@ ) ) ) - ;; CHECK: (func $a4 + ;; CHECK: (func $a4 (type $1) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -122,7 +122,7 @@ ) ) ) - ;; CHECK: (func $a5 (result i32) + ;; CHECK: (func $a5 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -164,7 +164,7 @@ ) ) ) - ;; CHECK: (func $a6 (result i32) + ;; CHECK: (func $a6 (type $2) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -226,7 +226,7 @@ ) ) ) - ;; CHECK: (func $a7 (result i32) + ;; CHECK: (func $a7 (type $2) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -300,7 +300,7 @@ ) ) ) - ;; CHECK: (func $a8 (result i32) + ;; CHECK: (func $a8 (type $2) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -401,7 +401,7 @@ ) ) ) - ;; CHECK: (func $a9 (result i32) + ;; CHECK: (func $a9 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -457,7 +457,7 @@ ) ) ) - ;; CHECK: (func $a10 (result i32) + ;; CHECK: (func $a10 (type $2) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -565,7 +565,7 @@ (br $outer (i32.const 8)) ) ) - ;; CHECK: (func $a11 + ;; CHECK: (func $a11 (type $1) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (drop @@ -578,7 +578,7 @@ (drop (i32.const 1)) ) ) - ;; CHECK: (func $a12 (result i32) + ;; CHECK: (func $a12 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (if @@ -603,7 +603,7 @@ (i32.const 2) ) ) - ;; CHECK: (func $a13 (result i32) + ;; CHECK: (func $a13 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -653,7 +653,7 @@ ) ) ) - ;; CHECK: (func $a14 (result i32) + ;; CHECK: (func $a14 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -688,7 +688,7 @@ ) ) ) - ;; CHECK: (func $a15 + ;; CHECK: (func $a15 (type $1) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f32) ;; CHECK-NEXT: (local $2 f32) @@ -733,7 +733,7 @@ ) ) ) - ;; CHECK: (func $a16 (result i32) + ;; CHECK: (func $a16 (type $2) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -809,7 +809,7 @@ (i32.const 0) ) ) - ;; CHECK: (func $a17 (result f32) + ;; CHECK: (func $a17 (type $none_=>_f32) (result f32) ;; CHECK-NEXT: (local $var$0 f32) ;; CHECK-NEXT: (local $1 f32) ;; CHECK-NEXT: (local $2 f32) @@ -858,7 +858,7 @@ ) ) ) - ;; CHECK: (func $a18 (result i32) + ;; CHECK: (func $a18 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $label$1 @@ -897,7 +897,7 @@ ) ) ) - ;; CHECK: (func $a19 (result f32) + ;; CHECK: (func $a19 (type $none_=>_f32) (result f32) ;; CHECK-NEXT: (block $label$0 ;; CHECK-NEXT: (block $label$1 ;; CHECK-NEXT: (unreachable) @@ -933,13 +933,13 @@ ) ) ) - ;; CHECK: (func $call-me (param $0 i32) (param $1 i32) + ;; CHECK: (func $call-me (type $ii) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $call-me (param $0 i32) (param $1 i32) (nop) ) - ;; CHECK: (func $code-to-kill + ;; CHECK: (func $code-to-kill (type $1) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -1866,7 +1866,7 @@ (i32.const 1337) ) ) - ;; CHECK: (func $killer + ;; CHECK: (func $killer (type $1) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) @@ -1882,7 +1882,7 @@ (i32.const 1000) ) ) - ;; CHECK: (func $target + ;; CHECK: (func $target (type $1) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 2000) ;; CHECK-NEXT: ) @@ -1892,7 +1892,7 @@ (i32.const 2000) ) ) - ;; CHECK: (func $typed-block-none-then-unreachable (result i32) + ;; CHECK: (func $typed-block-none-then-unreachable (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $top-typed @@ -1929,7 +1929,7 @@ ) ) ) - ;; CHECK: (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32) + ;; CHECK: (func $typed-block-remove-br-changes-type (type $3) (param $$$0 i32) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) @@ -1998,7 +1998,7 @@ (i32.const 0) ) ) - ;; CHECK: (func $global + ;; CHECK: (func $global (type $1) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (unreachable) @@ -2024,7 +2024,7 @@ (i32.const 1) ) ) - ;; CHECK: (func $ret (result i32) + ;; CHECK: (func $ret (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block @@ -2051,7 +2051,7 @@ (nop) (i32.const 0) ) - ;; CHECK: (func $unreachable-br (result i32) + ;; CHECK: (func $unreachable-br (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $out @@ -2078,7 +2078,7 @@ ) ) ) - ;; CHECK: (func $unreachable-br-loop (result i32) + ;; CHECK: (func $unreachable-br-loop (type $2) (result i32) ;; CHECK-NEXT: (loop $out ;; CHECK-NEXT: (br $out) ;; CHECK-NEXT: (unreachable) @@ -2090,7 +2090,7 @@ (br $out) ) ) - ;; CHECK: (func $unreachable-block-ends-switch (result i32) + ;; CHECK: (func $unreachable-block-ends-switch (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $label$0 @@ -2127,7 +2127,7 @@ (i32.const 19) ) ) - ;; CHECK: (func $unreachable-block-ends-br_if (result i32) + ;; CHECK: (func $unreachable-block-ends-br_if (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $label$0 @@ -2164,7 +2164,7 @@ (i32.const 19) ) ) - ;; CHECK: (func $unreachable-brs-3 (result i32) + ;; CHECK: (func $unreachable-brs-3 (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block $label$0 @@ -2200,7 +2200,7 @@ (i32.const 21) ) ) - ;; CHECK: (func $unreachable-brs-4 (param $var$0 i32) (result i32) + ;; CHECK: (func $unreachable-brs-4 (type $3) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) @@ -2268,7 +2268,7 @@ ) ) ) - ;; CHECK: (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64) + ;; CHECK: (func $call-unreach (type $4) (param $var$0 i64) (param $var$1 i64) (result i64) ;; CHECK-NEXT: (local $2 i64) ;; CHECK-NEXT: (local $3 i64) ;; CHECK-NEXT: (local $4 i32) @@ -2399,7 +2399,7 @@ ) ;; flatten-specific - ;; CHECK: (func $test-flatten + ;; CHECK: (func $test-flatten (type $1) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -2945,7 +2945,7 @@ ) ) ) - ;; CHECK: (func $flatten-return-value (result i32) + ;; CHECK: (func $flatten-return-value (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block @@ -2975,7 +2975,7 @@ (drop (i32.add (i32.const 1) (return (i32.const 2)))) (i32.const 3) ) - ;; CHECK: (func $unbug + ;; CHECK: (func $unbug (type $1) ;; CHECK-NEXT: (local $12 i32) ;; CHECK-NEXT: (local $432 i32) ;; CHECK-NEXT: (local $430 i32) @@ -3155,7 +3155,7 @@ ) ) ) - ;; CHECK: (func $outer-block-typed (param $var$0 i32) (result i32) + ;; CHECK: (func $outer-block-typed (type $3) (param $var$0 i32) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) @@ -3197,7 +3197,7 @@ ) ) ) - ;; CHECK: (func $nested-br_if-with-value (result i32) + ;; CHECK: (func $nested-br_if-with-value (type $2) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -3254,7 +3254,7 @@ (i32.const 1) ) ) - ;; CHECK: (func $switch-unreachable + ;; CHECK: (func $switch-unreachable (type $1) ;; CHECK-NEXT: (block $label$3 ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (br_table $label$3 @@ -3270,7 +3270,7 @@ ) ) ) - ;; CHECK: (func $br_if_order (param $x i32) (result i32) + ;; CHECK: (func $br_if_order (type $3) (param $x i32) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) @@ -3348,7 +3348,7 @@ ) ) ) - ;; CHECK: (func $tees (param $x i32) (param $y i32) + ;; CHECK: (func $tees (type $ii) (param $x i32) (param $y i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) @@ -3391,7 +3391,7 @@ (drop (local.tee $x (unreachable))) (drop (local.tee $y (local.tee $x (i32.const 2)))) ) - ;; CHECK: (func $return (param $x i32) (result i32) + ;; CHECK: (func $return (type $3) (param $x i32) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (i32.sub @@ -3415,7 +3415,7 @@ ;; targets an outer branch whose return type is a supertype of the br_if's ;; value type, we need the value to be set into two locals: one with the outer ;; block's type, and one with its value type. - ;; CHECK: (func $subtype (result anyref) + ;; CHECK: (func $subtype (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $0 eqref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (local $2 nullref) @@ -3483,7 +3483,7 @@ ;; CHECK: (export "test" (func $1)) - ;; CHECK: (func $0 (param $0 i64) (param $1 f32) + ;; CHECK: (func $0 (type $i64_f32_=>_none) (param $0 i64) (param $1 f32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $0 (param $0 i64) (param $1 f32) @@ -3501,7 +3501,7 @@ ) ;; non-nullable temp vars we add must be handled properly, as non-nullable ;; locals are not allowed -;; CHECK: (func $1 (result i32) +;; CHECK: (func $1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (return ;; CHECK-NEXT: (i32.const -111) @@ -3516,7 +3516,7 @@ (type $none_=>_none (func)) ;; CHECK: (type $none_=>_funcref (func (result funcref))) - ;; CHECK: (func $0 (result funcref) + ;; CHECK: (func $0 (type $none_=>_funcref) (result funcref) ;; CHECK-NEXT: (local $0 (ref nofunc)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (ref.as_non_null diff --git a/test/lit/passes/generate-dyncalls_all-features.wast b/test/lit/passes/generate-dyncalls_all-features.wast index 5f29a365d..63ca6a632 100644 --- a/test/lit/passes/generate-dyncalls_all-features.wast +++ b/test/lit/passes/generate-dyncalls_all-features.wast @@ -28,13 +28,13 @@ ;; CHECK: (export "dynCall_vii" (func $dynCall_vii)) - ;; CHECK: (func $f1 (result i32) + ;; CHECK: (func $f1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1024) ;; CHECK-NEXT: ) (func $f1 (result i32) (i32.const 1024) ) - ;; CHECK: (func $f2 (param $0 i32) (result i64) + ;; CHECK: (func $f2 (type $i32_=>_i64) (param $0 i32) (result i64) ;; CHECK-NEXT: (i64.const 42) ;; CHECK-NEXT: ) (func $f2 (param i32) (result i64) @@ -43,20 +43,20 @@ (table 2 2 funcref) (elem (i32.const 0) $f1 $f2) ) -;; CHECK: (func $dynCall_i (param $fptr i32) (result i32) +;; CHECK: (func $dynCall_i (type $i32_=>_i32) (param $fptr i32) (result i32) ;; CHECK-NEXT: (call_indirect $0 (type $none_=>_i32) ;; CHECK-NEXT: (local.get $fptr) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $dynCall_ji (param $fptr i32) (param $0 i32) (result i64) +;; CHECK: (func $dynCall_ji (type $i32_i32_=>_i64) (param $fptr i32) (param $0 i32) (result i64) ;; CHECK-NEXT: (call_indirect $0 (type $i32_=>_i64) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (local.get $fptr) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) +;; CHECK: (func $dynCall_vii (type $i32_i32_i32_=>_none) (param $fptr i32) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (call_indirect $0 (type $i32_i32_=>_none) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (local.get $1) @@ -83,20 +83,20 @@ ;; CHECK: (export "dynCall_vii" (func $dynCall_vii)) - ;; CHECK: (func $f (result i32) + ;; CHECK: (func $f (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) (func $f (result i32) (i32.const 42) ) ) -;; CHECK: (func $dynCall_i (param $fptr i32) (result i32) +;; CHECK: (func $dynCall_i (type $i32_=>_i32) (param $fptr i32) (result i32) ;; CHECK-NEXT: (call_indirect $timport$0 (type $none_=>_i32) ;; CHECK-NEXT: (local.get $fptr) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) +;; CHECK: (func $dynCall_vii (type $i32_i32_i32_=>_none) (param $fptr i32) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (call_indirect $timport$0 (type $i32_i32_=>_none) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (local.get $1) diff --git a/test/lit/passes/global-effects.wast b/test/lit/passes/global-effects.wast index 4207ae01f..18876c3a4 100644 --- a/test/lit/passes/global-effects.wast +++ b/test/lit/passes/global-effects.wast @@ -31,7 +31,7 @@ ;; DISCARD: (tag $tag (param)) (tag $tag) - ;; WITHOUT: (func $main + ;; WITHOUT: (func $main (type $none_=>_none) ;; WITHOUT-NEXT: (call $nop) ;; WITHOUT-NEXT: (call $unreachable) ;; WITHOUT-NEXT: (call $call-nop) @@ -40,12 +40,12 @@ ;; WITHOUT-NEXT: (call $unimportant-effects) ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $main + ;; INCLUDE: (func $main (type $none_=>_none) ;; INCLUDE-NEXT: (call $unreachable) ;; INCLUDE-NEXT: (call $call-nop) ;; INCLUDE-NEXT: (call $call-unreachable) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $main + ;; DISCARD: (func $main (type $none_=>_none) ;; DISCARD-NEXT: (call $nop) ;; DISCARD-NEXT: (call $unreachable) ;; DISCARD-NEXT: (call $call-nop) @@ -73,13 +73,13 @@ ) ) - ;; WITHOUT: (func $cycle + ;; WITHOUT: (func $cycle (type $none_=>_none) ;; WITHOUT-NEXT: (call $cycle) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $cycle + ;; INCLUDE: (func $cycle (type $none_=>_none) ;; INCLUDE-NEXT: (call $cycle) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $cycle + ;; DISCARD: (func $cycle (type $none_=>_none) ;; DISCARD-NEXT: (call $cycle) ;; DISCARD-NEXT: ) (func $cycle @@ -88,39 +88,39 @@ (call $cycle) ) - ;; WITHOUT: (func $nop + ;; WITHOUT: (func $nop (type $none_=>_none) ;; WITHOUT-NEXT: (nop) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $nop + ;; INCLUDE: (func $nop (type $none_=>_none) ;; INCLUDE-NEXT: (nop) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $nop + ;; DISCARD: (func $nop (type $none_=>_none) ;; DISCARD-NEXT: (nop) ;; DISCARD-NEXT: ) (func $nop (nop) ) - ;; WITHOUT: (func $unreachable + ;; WITHOUT: (func $unreachable (type $none_=>_none) ;; WITHOUT-NEXT: (unreachable) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $unreachable + ;; INCLUDE: (func $unreachable (type $none_=>_none) ;; INCLUDE-NEXT: (unreachable) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $unreachable + ;; DISCARD: (func $unreachable (type $none_=>_none) ;; DISCARD-NEXT: (unreachable) ;; DISCARD-NEXT: ) (func $unreachable (unreachable) ) - ;; WITHOUT: (func $call-nop + ;; WITHOUT: (func $call-nop (type $none_=>_none) ;; WITHOUT-NEXT: (call $nop) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $call-nop + ;; INCLUDE: (func $call-nop (type $none_=>_none) ;; INCLUDE-NEXT: (nop) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $call-nop + ;; DISCARD: (func $call-nop (type $none_=>_none) ;; DISCARD-NEXT: (call $nop) ;; DISCARD-NEXT: ) (func $call-nop @@ -128,20 +128,20 @@ (call $nop) ) - ;; WITHOUT: (func $call-unreachable + ;; WITHOUT: (func $call-unreachable (type $none_=>_none) ;; WITHOUT-NEXT: (call $unreachable) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $call-unreachable + ;; INCLUDE: (func $call-unreachable (type $none_=>_none) ;; INCLUDE-NEXT: (call $unreachable) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $call-unreachable + ;; DISCARD: (func $call-unreachable (type $none_=>_none) ;; DISCARD-NEXT: (call $unreachable) ;; DISCARD-NEXT: ) (func $call-unreachable (call $unreachable) ) - ;; WITHOUT: (func $unimportant-effects (result i32) + ;; WITHOUT: (func $unimportant-effects (type $none_=>_i32) (result i32) ;; WITHOUT-NEXT: (local $x i32) ;; WITHOUT-NEXT: (local.set $x ;; WITHOUT-NEXT: (i32.const 100) @@ -150,7 +150,7 @@ ;; WITHOUT-NEXT: (local.get $x) ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $unimportant-effects (result i32) + ;; INCLUDE: (func $unimportant-effects (type $none_=>_i32) (result i32) ;; INCLUDE-NEXT: (local $x i32) ;; INCLUDE-NEXT: (local.set $x ;; INCLUDE-NEXT: (i32.const 100) @@ -159,7 +159,7 @@ ;; INCLUDE-NEXT: (local.get $x) ;; INCLUDE-NEXT: ) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $unimportant-effects (result i32) + ;; DISCARD: (func $unimportant-effects (type $none_=>_i32) (result i32) ;; DISCARD-NEXT: (local $x i32) ;; DISCARD-NEXT: (local.set $x ;; DISCARD-NEXT: (i32.const 100) @@ -181,7 +181,7 @@ ) ) - ;; WITHOUT: (func $call-throw-and-catch + ;; WITHOUT: (func $call-throw-and-catch (type $none_=>_none) ;; WITHOUT-NEXT: (try $try ;; WITHOUT-NEXT: (do ;; WITHOUT-NEXT: (call $throw) @@ -191,10 +191,10 @@ ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $call-throw-and-catch + ;; INCLUDE: (func $call-throw-and-catch (type $none_=>_none) ;; INCLUDE-NEXT: (nop) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $call-throw-and-catch + ;; DISCARD: (func $call-throw-and-catch (type $none_=>_none) ;; DISCARD-NEXT: (try $try ;; DISCARD-NEXT: (do ;; DISCARD-NEXT: (call $throw) @@ -216,7 +216,7 @@ ) ) - ;; WITHOUT: (func $call-unreachable-and-catch + ;; WITHOUT: (func $call-unreachable-and-catch (type $none_=>_none) ;; WITHOUT-NEXT: (try $try ;; WITHOUT-NEXT: (do ;; WITHOUT-NEXT: (call $unreachable) @@ -226,10 +226,10 @@ ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $call-unreachable-and-catch + ;; INCLUDE: (func $call-unreachable-and-catch (type $none_=>_none) ;; INCLUDE-NEXT: (call $unreachable) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $call-unreachable-and-catch + ;; DISCARD: (func $call-unreachable-and-catch (type $none_=>_none) ;; DISCARD-NEXT: (try $try ;; DISCARD-NEXT: (do ;; DISCARD-NEXT: (call $unreachable) @@ -251,7 +251,7 @@ ) ) - ;; WITHOUT: (func $call-throw-or-unreachable-and-catch (param $x i32) + ;; WITHOUT: (func $call-throw-or-unreachable-and-catch (type $i32_=>_none) (param $x i32) ;; WITHOUT-NEXT: (try $try ;; WITHOUT-NEXT: (do ;; WITHOUT-NEXT: (if @@ -265,7 +265,7 @@ ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $call-throw-or-unreachable-and-catch (param $x i32) + ;; INCLUDE: (func $call-throw-or-unreachable-and-catch (type $i32_=>_none) (param $x i32) ;; INCLUDE-NEXT: (try $try ;; INCLUDE-NEXT: (do ;; INCLUDE-NEXT: (if @@ -279,7 +279,7 @@ ;; INCLUDE-NEXT: ) ;; INCLUDE-NEXT: ) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $call-throw-or-unreachable-and-catch (param $x i32) + ;; DISCARD: (func $call-throw-or-unreachable-and-catch (type $i32_=>_none) (param $x i32) ;; DISCARD-NEXT: (try $try ;; DISCARD-NEXT: (do ;; DISCARD-NEXT: (if @@ -308,13 +308,13 @@ ) ) - ;; WITHOUT: (func $throw + ;; WITHOUT: (func $throw (type $none_=>_none) ;; WITHOUT-NEXT: (throw $tag) ;; WITHOUT-NEXT: ) - ;; INCLUDE: (func $throw + ;; INCLUDE: (func $throw (type $none_=>_none) ;; INCLUDE-NEXT: (throw $tag) ;; INCLUDE-NEXT: ) - ;; DISCARD: (func $throw + ;; DISCARD: (func $throw (type $none_=>_none) ;; DISCARD-NEXT: (throw $tag) ;; DISCARD-NEXT: ) (func $throw diff --git a/test/lit/passes/global-refining.wast b/test/lit/passes/global-refining.wast index 645b170d4..2aa803285 100644 --- a/test/lit/passes/global-refining.wast +++ b/test/lit/passes/global-refining.wast @@ -6,7 +6,7 @@ ;; a null, so we have nothing concrete to improve with (though we could use ;; the type of the null perhaps, TODO). The second is a ref.func which lets ;; us refine. - ;; CHECK: (type $foo_t (func_subtype func)) + ;; CHECK: (type $foo_t (func)) (type $foo_t (func)) ;; CHECK: (global $func-null-init (mut funcref) (ref.null nofunc)) @@ -23,7 +23,7 @@ ;; Globals with later assignments of null. The global with a function in its ;; init will update the null to allow it to refine. - ;; CHECK: (type $foo_t (func_subtype func)) + ;; CHECK: (type $foo_t (func)) (type $foo_t (func)) ;; CHECK: (global $func-null-init (mut funcref) (ref.null nofunc)) @@ -49,7 +49,7 @@ ;; Globals with later assignments of something non-null. Both can be refined, ;; and the one with a non-null initial value can even become non-nullable. - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $func-null-init (mut (ref null $none_=>_none)) (ref.null nofunc)) (global $func-null-init (mut funcref) (ref.null func)) @@ -76,9 +76,9 @@ ;; A global with multiple later assignments. The refined type is more ;; specific than the original, but less than each of the non-null values. - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) (type $array (array i8)) diff --git a/test/lit/passes/gsi.wast b/test/lit/passes/gsi.wast index 66ca43de8..52ba5d7f6 100644 --- a/test/lit/passes/gsi.wast +++ b/test/lit/passes/gsi.wast @@ -2,10 +2,10 @@ ;; RUN: foreach %s %t wasm-opt --nominal --gsi -all -S -o - | filecheck %s (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -53,10 +53,10 @@ ;; As above, but now the field is mutable, so we cannot optimize. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -90,14 +90,13 @@ ;; Just one global. (module - ;; CHECK: (type $struct1 (struct_subtype (field i32) data)) + ;; CHECK: (type $struct1 (struct (field i32))) (type $struct1 (struct i32)) - ;; CHECK: (type $struct2 (struct_subtype (field i32) data)) + ;; CHECK: (type $struct2 (struct (field i32))) (type $struct2 (struct i32)) - - ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_=>_none (func_subtype (param (ref null $struct1) (ref null $struct2)) func)) + ;; CHECK: (type $ref?|$struct1|_ref?|$struct2|_=>_none (func (param (ref null $struct1) (ref null $struct2)))) ;; CHECK: (import "a" "b" (global $imported i32)) (import "a" "b" (global $imported i32)) @@ -163,10 +162,10 @@ ;; Three globals. For now, we do not optimize here. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -208,10 +207,10 @@ ;; Three globals, as above, but now two agree on their values. We can optimize ;; by comparing to the one that has a single value. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -259,10 +258,10 @@ ;; As above, but move the different value of the three to the middle. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 1337) @@ -310,10 +309,10 @@ ;; As above, but move the different value of the three to the end. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 1337) @@ -361,10 +360,10 @@ ;; Four values, two pairs of equal ones. We do not optimize this. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -413,10 +412,10 @@ ;; Four values, three equal and one unique. We can optimize this with a single ;; comparison on the unique one. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -471,10 +470,10 @@ ;; A struct.new inside a function stops us from optimizing. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -519,10 +518,10 @@ ;; We ignore imports, as we assume a closed world, but that might change in the ;; future. For now, we will optimize here. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (import "a" "b" (global $global-import (ref $struct))) (import "a" "b" (global $global-import (ref $struct))) @@ -567,13 +566,13 @@ ;; A struct.new in a non-toplevel position in a global stops us from ;; optimizing. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $tuple (struct_subtype (field anyref) (field anyref) data)) + ;; CHECK: (type $tuple (struct (field anyref) (field anyref))) (type $tuple (struct anyref anyref)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -621,13 +620,13 @@ ;; As above, but remove the struct.new in a nested position, while keeping all ;; the other stuff in the above test. Now we should optimize. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $tuple (struct_subtype (field anyref) (field anyref) data)) + ;; CHECK: (type $tuple (struct (field anyref) (field anyref))) (type $tuple (struct anyref anyref)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -677,10 +676,10 @@ ;; When one of the globals is mutable, we cannot optimize. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -714,10 +713,10 @@ ;; A subtype is not optimizable, which prevents $struct from being optimized. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct_subtype i32 data)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (type $sub-struct (struct_subtype (field i32) $struct)) (type $sub-struct (struct_subtype i32 $struct)) @@ -765,13 +764,13 @@ ;; A *super*-type is not optimizable, but that does not block us, and we can ;; optimize. (module - ;; CHECK: (type $super-struct (struct_subtype (field i32) data)) + ;; CHECK: (type $super-struct (struct (field i32))) (type $super-struct (struct_subtype i32 data)) ;; CHECK: (type $struct (struct_subtype (field i32) $super-struct)) (type $struct (struct_subtype i32 $super-struct)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) @@ -823,13 +822,13 @@ ;; One global for each of the type and the subtype. The optimization will pick ;; between their 2 values. (module - ;; CHECK: (type $super-struct (struct_subtype (field i32) data)) + ;; CHECK: (type $super-struct (struct (field i32))) (type $super-struct (struct_subtype i32 data)) ;; CHECK: (type $struct (struct_subtype (field i32) $super-struct)) (type $struct (struct_subtype i32 $super-struct)) - ;; CHECK: (type $ref?|$struct|_ref?|$super-struct|_=>_none (func_subtype (param (ref null $struct) (ref null $super-struct)) func)) + ;; CHECK: (type $ref?|$struct|_ref?|$super-struct|_=>_none (func (param (ref null $struct) (ref null $super-struct)))) ;; CHECK: (global $global1 (ref $super-struct) (struct.new $super-struct ;; CHECK-NEXT: (i32.const 42) @@ -890,10 +889,10 @@ ;; One global has a non-constant field, so we cannot optimize. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.add @@ -934,7 +933,7 @@ ;; One global each for two subtypes of a common supertype, and one for the ;; supertype. (module - ;; CHECK: (type $super-struct (struct_subtype (field i32) data)) + ;; CHECK: (type $super-struct (struct (field i32))) (type $super-struct (struct_subtype i32 data)) ;; CHECK: (type $struct1 (struct_subtype (field i32) (field f32) $super-struct)) @@ -944,7 +943,7 @@ (type $struct2 (struct_subtype i32 f64 $super-struct)) - ;; CHECK: (type $ref?|$super-struct|_ref?|$struct1|_ref?|$struct2|_=>_none (func_subtype (param (ref null $super-struct) (ref null $struct1) (ref null $struct2)) func)) + ;; CHECK: (type $ref?|$super-struct|_ref?|$struct1|_ref?|$struct2|_=>_none (func (param (ref null $super-struct) (ref null $struct1) (ref null $struct2)))) ;; CHECK: (global $global0 (ref $super-struct) (struct.new $super-struct ;; CHECK-NEXT: (i32.const 42) @@ -1027,7 +1026,7 @@ ;; As above, but now the subtypes each have 2 values, and we can optimize. (module - ;; CHECK: (type $super-struct (struct_subtype (field i32) data)) + ;; CHECK: (type $super-struct (struct (field i32))) (type $super-struct (struct_subtype i32 data)) ;; CHECK: (type $struct1 (struct_subtype (field i32) (field f32) $super-struct)) @@ -1037,7 +1036,7 @@ (type $struct2 (struct_subtype i32 f64 $super-struct)) - ;; CHECK: (type $ref?|$super-struct|_ref?|$struct1|_ref?|$struct2|_=>_none (func_subtype (param (ref null $super-struct) (ref null $struct1) (ref null $struct2)) func)) + ;; CHECK: (type $ref?|$super-struct|_ref?|$struct1|_ref?|$struct2|_=>_none (func (param (ref null $super-struct) (ref null $struct1) (ref null $struct2)))) ;; CHECK: (global $global0 (ref $super-struct) (struct.new $super-struct ;; CHECK-NEXT: (i32.const 42) @@ -1137,10 +1136,10 @@ ;; Multiple globals, but all the same value, so we do not even need a select and ;; can just apply the value. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (global $global1 (ref $struct) (struct.new $struct ;; CHECK-NEXT: (i32.const 42) diff --git a/test/lit/passes/gsi_vacuum_precompute.wast b/test/lit/passes/gsi_vacuum_precompute.wast index 856499ba8..9f67c84f5 100644 --- a/test/lit/passes/gsi_vacuum_precompute.wast +++ b/test/lit/passes/gsi_vacuum_precompute.wast @@ -20,21 +20,21 @@ ;; that could prevent later opts. (module - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) - ;; CHECK: (type $itable1 (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $itable1 (struct (field (ref $vtable)))) (type $itable1 (struct_subtype (field (ref $vtable)) data)) - ;; CHECK: (type $itable2 (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $itable2 (struct (field (ref $vtable)))) (type $itable2 (struct_subtype (field (ref $vtable)) data)) (type $vtable (struct_subtype (field funcref) data)) ;; Two $vtable instances are created, in separate enclosing objects. - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref|$itable1|_=>_funcref (func_subtype (param (ref $itable1)) (result funcref) func)) + ;; CHECK: (type $ref|$itable1|_=>_funcref (func (param (ref $itable1)) (result funcref))) - ;; CHECK: (type $ref|$itable2|_=>_funcref (func_subtype (param (ref $itable2)) (result funcref) func)) + ;; CHECK: (type $ref|$itable2|_=>_funcref (func (param (ref $itable2)) (result funcref))) ;; CHECK: (global $itable1 (ref $itable1) (struct.new $itable1 ;; CHECK-NEXT: (struct.new $vtable diff --git a/test/lit/passes/gto-mutability.wast b/test/lit/passes/gto-mutability.wast index edcf43bb2..4f1e9a6d4 100644 --- a/test/lit/passes/gto-mutability.wast +++ b/test/lit/passes/gto-mutability.wast @@ -7,20 +7,20 @@ ;; The struct here has three fields, and the second of them has no struct.set ;; which means we can make it immutable. - ;; CHECK: (type $struct (struct_subtype (field (mut funcref)) (field funcref) (field (mut funcref)) data)) + ;; CHECK: (type $struct (struct (field (mut funcref)) (field funcref) (field (mut funcref)))) (type $struct (struct (field (mut funcref)) (field (mut funcref)) (field (mut funcref)))) - ;; CHECK: (type $two-params (func_subtype (param (ref $struct) (ref $struct)) func)) + ;; CHECK: (type $two-params (func (param (ref $struct) (ref $struct)))) (type $two-params (func (param (ref $struct)) (param (ref $struct)))) ;; Test that we update tag types properly. (table 0 funcref) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) - ;; CHECK: (type $none_=>_ref?|$struct| (func_subtype (result (ref null $struct)) func)) + ;; CHECK: (type $none_=>_ref?|$struct| (func (result (ref null $struct)))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (table $0 0 funcref) @@ -171,14 +171,14 @@ ;; Test recursion between structs where we only modify one. Specifically $B ;; has no writes to either of its fields. - ;; CHECK: (type $A (struct_subtype (field (mut (ref null $B))) (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut (ref null $B))) (field (mut i32)))) (type $A (struct (field (mut (ref null $B))) (field (mut i32)) )) - ;; CHECK: (type $B (struct_subtype (field (ref null $A)) (field f64) data)) + ;; CHECK: (type $B (struct (field (ref null $A)) (field f64))) (type $B (struct (field (mut (ref null $A))) (field (mut f64)) )) - ;; CHECK: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CHECK: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func_subtype (param (ref null $A) (ref null $B)) func)) + ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func (param (ref null $A) (ref null $B)))) ;; CHECK: (func $func (type $ref|$A|_=>_none) (param $x (ref $A)) ;; CHECK-NEXT: (struct.set $A 0 @@ -234,15 +234,15 @@ (module ;; As before, but flipped so that $A's fields can become immutable. - ;; CHECK: (type $B (struct_subtype (field (mut (ref null $A))) (field (mut f64)) data)) + ;; CHECK: (type $B (struct (field (mut (ref null $A))) (field (mut f64)))) (type $B (struct (field (mut (ref null $A))) (field (mut f64)) )) - ;; CHECK: (type $A (struct_subtype (field (ref null $B)) (field i32) data)) + ;; CHECK: (type $A (struct (field (ref null $B)) (field i32))) (type $A (struct (field (mut (ref null $B))) (field (mut i32)) )) - ;; CHECK: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; CHECK: (type $ref|$B|_=>_none (func (param (ref $B)))) - ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func_subtype (param (ref null $A) (ref null $B)) func)) + ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func (param (ref null $A) (ref null $B)))) ;; CHECK: (func $func (type $ref|$B|_=>_none) (param $x (ref $B)) ;; CHECK-NEXT: (struct.set $B 0 @@ -298,16 +298,16 @@ (module ;; As before, but now one field in each can become immutable. - ;; CHECK: (type $A (struct_subtype (field (mut (ref null $B))) (field i32) data)) + ;; CHECK: (type $A (struct (field (mut (ref null $B))) (field i32))) - ;; CHECK: (type $B (struct_subtype (field (ref null $A)) (field (mut f64)) data)) + ;; CHECK: (type $B (struct (field (ref null $A)) (field (mut f64)))) (type $B (struct (field (mut (ref null $A))) (field (mut f64)) )) (type $A (struct (field (mut (ref null $B))) (field (mut i32)) )) - ;; CHECK: (type $ref|$A|_ref|$B|_=>_none (func_subtype (param (ref $A) (ref $B)) func)) + ;; CHECK: (type $ref|$A|_ref|$B|_=>_none (func (param (ref $A) (ref $B)))) - ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func_subtype (param (ref null $A) (ref null $B)) func)) + ;; CHECK: (type $ref?|$A|_ref?|$B|_=>_none (func (param (ref null $A) (ref null $B)))) ;; CHECK: (func $func (type $ref|$A|_ref|$B|_=>_none) (param $x (ref $A)) (param $y (ref $B)) ;; CHECK-NEXT: (struct.set $A 0 @@ -365,12 +365,12 @@ ;; Field #1 is mutable and can become so. ;; Field #2 is mutable and must remain so. - ;; CHECK: (type $struct (struct_subtype (field i32) (field i32) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field i32) (field i32) (field (mut i32)))) (type $struct (struct (field i32) (field (mut i32)) (field (mut i32)))) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) - ;; CHECK: (type $ref?|$struct|_=>_none (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $ref?|$struct|_=>_none (func (param (ref null $struct)))) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (struct.set $struct 2 @@ -413,14 +413,14 @@ ;; Subtyping. Without a write in either supertype or subtype, we can ;; optimize the field to be immutable. - ;; CHECK: (type $super (struct_subtype (field i32) data)) + ;; CHECK: (type $super (struct (field i32))) (type $super (struct (field (mut i32)))) ;; CHECK: (type $sub (struct_subtype (field i32) $super)) (type $sub (struct_subtype (field (mut i32)) $super)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func_subtype (param (ref null $super) (ref null $sub)) func)) + ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func (param (ref null $super) (ref null $sub)))) ;; CHECK: (func $func (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -469,14 +469,14 @@ (module ;; As above, but add a write in the super, which prevents optimization. - ;; CHECK: (type $super (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $super (struct (field (mut i32)))) (type $super (struct (field (mut i32)))) ;; CHECK: (type $sub (struct_subtype (field (mut i32)) $super)) (type $sub (struct_subtype (field (mut i32)) $super)) - ;; CHECK: (type $ref|$super|_=>_none (func_subtype (param (ref $super)) func)) + ;; CHECK: (type $ref|$super|_=>_none (func (param (ref $super)))) - ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func_subtype (param (ref null $super) (ref null $sub)) func)) + ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func (param (ref null $super) (ref null $sub)))) ;; CHECK: (func $func (type $ref|$super|_=>_none) (param $x (ref $super)) ;; CHECK-NEXT: (drop @@ -534,14 +534,14 @@ ;; As above, but add a write in the sub, which prevents optimization. - ;; CHECK: (type $super (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $super (struct (field (mut i32)))) (type $super (struct (field (mut i32)))) ;; CHECK: (type $sub (struct_subtype (field (mut i32)) $super)) (type $sub (struct_subtype (field (mut i32)) $super)) - ;; CHECK: (type $ref|$sub|_=>_none (func_subtype (param (ref $sub)) func)) + ;; CHECK: (type $ref|$sub|_=>_none (func (param (ref $sub)))) - ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func_subtype (param (ref null $super) (ref null $sub)) func)) + ;; CHECK: (type $ref?|$super|_ref?|$sub|_=>_none (func (param (ref null $super) (ref null $sub)))) ;; CHECK: (func $func (type $ref|$sub|_=>_none) (param $x (ref $sub)) ;; CHECK-NEXT: (struct.set $sub 0 diff --git a/test/lit/passes/gto-removals.wast b/test/lit/passes/gto-removals.wast index 184359f49..55a995469 100644 --- a/test/lit/passes/gto-removals.wast +++ b/test/lit/passes/gto-removals.wast @@ -7,9 +7,9 @@ ;; A struct with a field that is never read or written, so it can be ;; removed. - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype (field (mut funcref)) data)) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) @@ -22,10 +22,10 @@ (module ;; A write does not keep a field from being removed. - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype (field (mut funcref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (drop @@ -52,10 +52,10 @@ (module ;; A new does not keep a field from being removed. - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype (field (mut funcref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (drop @@ -75,10 +75,10 @@ (module ;; A new_default does not keep a field from being removed. - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype (field (mut funcref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (drop @@ -97,10 +97,10 @@ (module ;; A read *does* keep a field from being removed. - ;; CHECK: (type $struct (struct_subtype (field funcref) data)) + ;; CHECK: (type $struct (struct (field funcref))) (type $struct (struct_subtype (field (mut funcref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (drop @@ -124,17 +124,17 @@ ;; of removing with the immutability inference that --gto does.) ;; A struct with all fields marked mutable. - ;; CHECK: (type $mut-struct (struct_subtype (field $r i32) (field $rw (mut i32)) (field $r-2 i32) (field $rw-2 (mut i32)) data)) + ;; CHECK: (type $mut-struct (struct (field $r i32) (field $rw (mut i32)) (field $r-2 i32) (field $rw-2 (mut i32)))) (type $mut-struct (struct_subtype (field $r (mut i32)) (field $w (mut i32)) (field $rw (mut i32)) (field $r-2 (mut i32)) (field $w-2 (mut i32)) (field $rw-2 (mut i32)) data)) ;; A similar struct but with all fields marked immutable, and the only ;; writes are from during creation (so all fields are at least writeable). - ;; CHECK: (type $imm-struct (struct_subtype (field $rw i32) (field $rw-2 i32) data)) + ;; CHECK: (type $imm-struct (struct (field $rw i32) (field $rw-2 i32))) (type $imm-struct (struct_subtype (field $w i32) (field $rw i32) (field $w-2 i32) (field $rw-2 i32) data)) - ;; CHECK: (type $ref|$mut-struct|_=>_none (func_subtype (param (ref $mut-struct)) func)) + ;; CHECK: (type $ref|$mut-struct|_=>_none (func (param (ref $mut-struct)))) - ;; CHECK: (type $ref|$imm-struct|_=>_none (func_subtype (param (ref $imm-struct)) func)) + ;; CHECK: (type $ref|$imm-struct|_=>_none (func (param (ref $imm-struct)))) ;; CHECK: (func $func-mut (type $ref|$mut-struct|_=>_none) (param $x (ref $mut-struct)) ;; CHECK-NEXT: (drop @@ -275,9 +275,9 @@ ;; A vtable-like structure created in a global location. Only some of the ;; fields are accessed. - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $vtable (struct_subtype (field $v1 funcref) (field $v2 funcref) data)) + ;; CHECK: (type $vtable (struct (field $v1 funcref) (field $v2 funcref))) (type $vtable (struct_subtype (field $v0 funcref) (field $v1 funcref) (field $v2 funcref) (field $v3 funcref) (field $v4 funcref) data)) ;; CHECK: (global $vtable (ref $vtable) (struct.new $vtable @@ -349,10 +349,10 @@ ;; by coincidence. - ;; CHECK: (type $vtable (struct_subtype (field $v1 i64) (field $v2 f32) data)) + ;; CHECK: (type $vtable (struct (field $v1 i64) (field $v2 f32))) (type $vtable (struct_subtype (field $v0 i32) (field $v1 i64) (field $v2 f32) (field $v3 f64) (field $v4 anyref) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $vtable (ref $vtable) (struct.new $vtable ;; CHECK-NEXT: (i64.const 1) @@ -399,21 +399,21 @@ (module ;; A new with side effects - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32 f64 (ref any))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $ref|any|_ref?|$struct|_=>_none (func_subtype (param (ref any) (ref null $struct)) func)) + ;; CHECK: (type $ref|any|_ref?|$struct|_=>_none (func (param (ref any) (ref null $struct)))) - ;; CHECK: (type $ref|any|_=>_none (func_subtype (param (ref any)) func)) + ;; CHECK: (type $ref|any|_=>_none (func (param (ref any)))) - ;; CHECK: (type $i32_=>_i32 (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (type $i32_=>_f64 (func_subtype (param i32) (result f64) func)) + ;; CHECK: (type $i32_=>_f64 (func (param i32) (result f64))) - ;; CHECK: (type $i32_=>_ref|any| (func_subtype (param i32) (result (ref any)) func)) + ;; CHECK: (type $i32_=>_ref|any| (func (param i32) (result (ref any)))) ;; CHECK: (global $imm-i32 i32 (i32.const 1234)) (global $imm-i32 i32 (i32.const 1234)) @@ -626,14 +626,14 @@ ;; We can remove fields from the end if they are only used in subtypes, because ;; the subtypes can always add fields at the end (and only at the end). (module - ;; CHECK: (type $parent (struct_subtype (field i32) (field i64) data)) + ;; CHECK: (type $parent (struct (field i32) (field i64))) ;; CHECK: (type $child (struct_subtype (field i32) (field i64) (field f32) (field f64) (field anyref) $parent)) (type $child (struct_subtype (field i32) (field i64) (field f32) (field f64) (field anyref) $parent)) (type $parent (struct_subtype (field i32) (field i64) (field f32) (field f64) data)) - ;; CHECK: (type $ref|$parent|_ref|$child|_=>_none (func_subtype (param (ref $parent) (ref $child)) func)) + ;; CHECK: (type $ref|$parent|_ref|$child|_=>_none (func (param (ref $parent) (ref $child)))) ;; CHECK: (func $func (type $ref|$parent|_ref|$child|_=>_none) (param $x (ref $parent)) (param $y (ref $child)) ;; CHECK-NEXT: (drop @@ -676,14 +676,14 @@ ) (module - ;; CHECK: (type $parent (struct_subtype (field i32) (field i64) (field (mut f32)) data)) + ;; CHECK: (type $parent (struct (field i32) (field i64) (field (mut f32)))) ;; CHECK: (type $child (struct_subtype (field i32) (field i64) (field (mut f32)) (field f64) (field anyref) $parent)) (type $child (struct_subtype (field (mut i32)) (field (mut i64)) (field (mut f32)) (field (mut f64)) (field (mut anyref)) $parent)) (type $parent (struct_subtype (field (mut i32)) (field (mut i64)) (field (mut f32)) (field (mut f64)) data)) - ;; CHECK: (type $ref|$parent|_ref|$child|_=>_none (func_subtype (param (ref $parent) (ref $child)) func)) + ;; CHECK: (type $ref|$parent|_ref|$child|_=>_none (func (param (ref $parent) (ref $child)))) ;; CHECK: (func $func (type $ref|$parent|_ref|$child|_=>_none) (param $x (ref $parent)) (param $y (ref $child)) ;; CHECK-NEXT: (struct.set $parent 2 @@ -733,9 +733,9 @@ ;; reads might be of data of either child, of course (as a refernce to the ;; parent might point to them), so we cannot optimize here. (module - ;; CHECK: (type $parent (struct_subtype (field i32) data)) + ;; CHECK: (type $parent (struct (field i32))) (type $parent (struct_subtype (field i32) data)) - ;; CHECK: (type $ref|$parent|_ref|$child1|_ref|$child2|_=>_none (func_subtype (param (ref $parent) (ref $child1) (ref $child2)) func)) + ;; CHECK: (type $ref|$parent|_ref|$child1|_ref|$child2|_=>_none (func (param (ref $parent) (ref $child1) (ref $child2)))) ;; CHECK: (type $child1 (struct_subtype (field i32) $parent)) (type $child1 (struct_subtype (field i32) $parent)) @@ -757,13 +757,13 @@ ;; As above, but now the read is just of one child. We can remove the field ;; from the parent and the other child. (module - ;; CHECK: (type $parent (struct_subtype data)) + ;; CHECK: (type $parent (struct )) ;; CHECK: (type $child1 (struct_subtype (field i32) $parent)) (type $child1 (struct_subtype (field i32) $parent)) (type $parent (struct_subtype (field i32) data)) - ;; CHECK: (type $ref|$parent|_ref|$child1|_ref|$child2|_=>_none (func_subtype (param (ref $parent) (ref $child1) (ref $child2)) func)) + ;; CHECK: (type $ref|$parent|_ref|$child1|_ref|$child2|_=>_none (func (param (ref $parent) (ref $child1) (ref $child2)))) ;; CHECK: (type $child2 (struct_subtype $parent)) (type $child2 (struct_subtype (field i32) $parent)) @@ -781,16 +781,16 @@ ) (module - ;; CHECK: (type ${mut:i8} (struct_subtype data)) + ;; CHECK: (type ${mut:i8} (struct )) (type ${mut:i8} (struct_subtype (field (mut i8)) data)) - ;; CHECK: (type $ref?|${mut:i8}|_=>_none (func_subtype (param (ref null ${mut:i8})) func)) + ;; CHECK: (type $ref?|${mut:i8}|_=>_none (func (param (ref null ${mut:i8})))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|${mut:i8}| (func_subtype (result (ref ${mut:i8})) func)) + ;; CHECK: (type $none_=>_ref|${mut:i8}| (func (result (ref ${mut:i8})))) ;; CHECK: (func $unreachable-set (type $ref?|${mut:i8}|_=>_none) (param ${mut:i8} (ref null ${mut:i8})) ;; CHECK-NEXT: (drop diff --git a/test/lit/passes/gto_and_cfp_in_O.wast b/test/lit/passes/gto_and_cfp_in_O.wast index 6f0151122..a36bbc4ea 100644 --- a/test/lit/passes/gto_and_cfp_in_O.wast +++ b/test/lit/passes/gto_and_cfp_in_O.wast @@ -26,7 +26,7 @@ ) ) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) ;; CHECK: (export "main" (func $main)) diff --git a/test/lit/passes/gufa-extern.wast b/test/lit/passes/gufa-extern.wast index 4a626b9c9..2c38a0118 100644 --- a/test/lit/passes/gufa-extern.wast +++ b/test/lit/passes/gufa-extern.wast @@ -2,7 +2,7 @@ ;; RUN: foreach %s %t wasm-opt -all --gufa --nominal -S -o - | filecheck %s (module - ;; CHECK: (type $externref_anyref_=>_none (func_subtype (param externref anyref) func)) + ;; CHECK: (type $externref_anyref_=>_none (func (param externref anyref))) ;; CHECK: (export "externals" (func $externals)) diff --git a/test/lit/passes/gufa-optimizing.wast b/test/lit/passes/gufa-optimizing.wast index 7ccd6ae34..ac69ed241 100644 --- a/test/lit/passes/gufa-optimizing.wast +++ b/test/lit/passes/gufa-optimizing.wast @@ -9,12 +9,12 @@ (module ;; NO_OPT: (type $none_=>_i32 (func (result i32))) - ;; NO_OPT: (func $foo (result i32) + ;; NO_OPT: (func $foo (type $none_=>_i32) (result i32) ;; NO_OPT-NEXT: (i32.const 1) ;; NO_OPT-NEXT: ) ;; DO_OPT: (type $none_=>_i32 (func (result i32))) - ;; DO_OPT: (func $foo (result i32) + ;; DO_OPT: (func $foo (type $none_=>_i32) (result i32) ;; DO_OPT-NEXT: (i32.const 1) ;; DO_OPT-NEXT: ) (func $foo (result i32) @@ -22,7 +22,7 @@ (i32.const 1) ) - ;; NO_OPT: (func $bar (result i32) + ;; NO_OPT: (func $bar (type $none_=>_i32) (result i32) ;; NO_OPT-NEXT: (drop ;; NO_OPT-NEXT: (block $out (result i32) ;; NO_OPT-NEXT: (block (result i32) @@ -42,7 +42,7 @@ ;; NO_OPT-NEXT: ) ;; NO_OPT-NEXT: (i32.const 1) ;; NO_OPT-NEXT: ) - ;; DO_OPT: (func $bar (result i32) + ;; DO_OPT: (func $bar (type $none_=>_i32) (result i32) ;; DO_OPT-NEXT: (drop ;; DO_OPT-NEXT: (call $foo) ;; DO_OPT-NEXT: ) diff --git a/test/lit/passes/gufa-refs.wast b/test/lit/passes/gufa-refs.wast index 310bef59b..ab8e23502 100644 --- a/test/lit/passes/gufa-refs.wast +++ b/test/lit/passes/gufa-refs.wast @@ -2,19 +2,19 @@ ;; RUN: foreach %s %t wasm-opt -all --gufa --nominal -S -o - | filecheck %s (module - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|any| (func_subtype (result (ref any)) func)) + ;; CHECK: (type $none_=>_ref|any| (func (result (ref any)))) - ;; CHECK: (type $none_=>_funcref (func_subtype (result funcref) func)) + ;; CHECK: (type $none_=>_funcref (func (result funcref))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -407,10 +407,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $null anyref (ref.null none)) (global $null (ref null any) (ref.null any)) @@ -503,9 +503,9 @@ ;; away *-null (which is where A-null starts with null) but not *-something ;; (which is where A-something starts with a value). (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) ;; CHECK: (global $A-null anyref (ref.null none)) @@ -613,16 +613,16 @@ ) (module - ;; CHECK: (type $ref|any|_=>_ref|any| (func_subtype (param (ref any)) (result (ref any)) func)) + ;; CHECK: (type $ref|any|_=>_ref|any| (func (param (ref any)) (result (ref any)))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) - ;; CHECK: (type $i32_=>_i32 (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (type $ref|any|_ref|any|_ref|any|_=>_none (func_subtype (param (ref any) (ref any) (ref any)) func)) + ;; CHECK: (type $ref|any|_ref|any|_ref|any|_=>_none (func (param (ref any) (ref any) (ref any)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $never-called (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (unreachable) @@ -725,12 +725,12 @@ ;; As above, but using indirect calls. (module - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) - ;; CHECK: (type $two-params (func_subtype (param (ref $struct) (ref $struct)) func)) + ;; CHECK: (type $two-params (func (param (ref $struct) (ref $struct)))) (type $two-params (func (param (ref $struct)) (param (ref $struct)))) - ;; CHECK: (type $three-params (func_subtype (param (ref $struct) (ref $struct) (ref $struct)) func)) + ;; CHECK: (type $three-params (func (param (ref $struct) (ref $struct) (ref $struct)))) (type $three-params (func (param (ref $struct)) (param (ref $struct)) (param (ref $struct)))) (type $struct (struct)) @@ -858,9 +858,9 @@ ;; As above, but using call_ref. (module - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) - ;; CHECK: (type $two-params (func_subtype (param (ref $struct) (ref $struct)) func)) + ;; CHECK: (type $two-params (func (param (ref $struct) (ref $struct)))) (type $two-params (func (param (ref $struct)) (param (ref $struct)))) (type $struct (struct)) @@ -900,10 +900,10 @@ ;; Array creation. (module - ;; CHECK: (type $vector (array_subtype (mut f64) data)) + ;; CHECK: (type $vector (array (mut f64))) (type $vector (array (mut f64))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $arrays (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -969,17 +969,17 @@ ;; Struct fields. (module - ;; CHECK: (type $parent (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $parent (struct (field (mut (ref null $struct))))) ;; CHECK: (type $child (struct_subtype (field (mut (ref null $struct))) (field (mut (ref null $struct))) $parent)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $parent (struct_subtype (field (mut (ref null $struct))) data)) (type $child (struct_subtype (field (mut (ref null $struct))) (field (mut (ref null $struct))) $parent)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -1220,7 +1220,7 @@ (type $B (struct_subtype (field i32) data)) (type $C (struct_subtype (field i32) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -1250,16 +1250,16 @@ ;; Exact types: Writes to the parent class do not confuse us. (module - ;; CHECK: (type $parent (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $parent (struct (field (mut (ref null $struct))))) ;; CHECK: (type $child (struct_subtype (field (mut (ref null $struct))) (field i32) $parent)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $parent (struct_subtype (field (mut (ref null $struct))) data)) (type $child (struct_subtype (field (mut (ref null $struct))) (field i32) $parent)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $none_=>_none) ;; CHECK-NEXT: (local $child (ref null $child)) @@ -1336,12 +1336,12 @@ ;; Write values to the parent *and* the child and read from the child. (module - ;; CHECK: (type $parent (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $parent (struct (field (mut i32)))) (type $parent (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $none_=>_none) ;; CHECK-NEXT: (local $child (ref null $child)) @@ -1428,12 +1428,12 @@ ;; As above, but the $parent local can now contain a child too. (module - ;; CHECK: (type $parent (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $parent (struct (field (mut i32)))) (type $parent (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "func" (func $func)) @@ -1511,12 +1511,12 @@ ;; As above, but now the parent and child happen to agree on the aliased value. (module - ;; CHECK: (type $parent (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $parent (struct (field (mut i32)))) (type $parent (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) (type $child (struct_subtype (field (mut i32)) (field i32) $parent)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $none_=>_none) ;; CHECK-NEXT: (local $child (ref null $child)) @@ -1589,17 +1589,17 @@ (module (type $nothing (array_subtype (mut (ref null any)) data)) - ;; CHECK: (type $null (array_subtype (mut anyref) data)) + ;; CHECK: (type $null (array (mut anyref))) (type $null (array_subtype (mut (ref null any)) data)) - ;; CHECK: (type $something (array_subtype (mut anyref) data)) + ;; CHECK: (type $something (array (mut anyref))) (type $something (array_subtype (mut (ref null any)) data)) (type $something-child (array_subtype (mut (ref null any)) $something)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) ;; CHECK: (func $func (type $none_=>_none) @@ -1725,16 +1725,16 @@ ;; A big chain, from an allocation that passes through many locations along the ;; way before it is used. Nothing here can be optimized. (module - ;; CHECK: (type $storage (struct_subtype (field (mut anyref)) data)) + ;; CHECK: (type $storage (struct (field (mut anyref)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) (type $storage (struct (field (mut (ref null any))))) - ;; CHECK: (type $anyref_=>_anyref (func_subtype (param anyref) (result anyref) func)) + ;; CHECK: (type $anyref_=>_anyref (func (param anyref) (result anyref))) ;; CHECK: (global $x (mut anyref) (ref.null none)) (global $x (mut (ref null any)) (ref.null any)) @@ -1798,12 +1798,12 @@ (module (type $struct (struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $storage (struct_subtype (field (mut anyref)) data)) + ;; CHECK: (type $storage (struct (field (mut anyref)))) (type $storage (struct (field (mut (ref null any))))) - ;; CHECK: (type $anyref_=>_anyref (func_subtype (param anyref) (result anyref) func)) + ;; CHECK: (type $anyref_=>_anyref (func (param anyref) (result anyref))) ;; CHECK: (global $x (mut anyref) (ref.null none)) (global $x (mut (ref null any)) (ref.null any)) @@ -1869,16 +1869,16 @@ ;; A single long chain as above, but now we break the chain in the middle by ;; adding a non-null value. (module - ;; CHECK: (type $storage (struct_subtype (field (mut anyref)) data)) + ;; CHECK: (type $storage (struct (field (mut anyref)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) (type $storage (struct (field (mut (ref null any))))) - ;; CHECK: (type $anyref_=>_anyref (func_subtype (param anyref) (result anyref) func)) + ;; CHECK: (type $anyref_=>_anyref (func (param anyref) (result anyref))) ;; CHECK: (global $x (mut anyref) (ref.null none)) (global $x (mut (ref null any)) (ref.null any)) @@ -1936,11 +1936,11 @@ ;; Exceptions. (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $anyref_=>_none (func_subtype (param anyref) func)) + ;; CHECK: (type $anyref_=>_none (func (param anyref))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) ;; CHECK: (tag $nothing (param anyref)) @@ -2170,11 +2170,11 @@ ;; Exceptions with a tuple (module - ;; CHECK: (type $anyref_anyref_=>_none (func_subtype (param anyref anyref) func)) + ;; CHECK: (type $anyref_anyref_=>_none (func (param anyref anyref))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct)) ;; CHECK: (tag $tag (param anyref anyref)) @@ -2249,9 +2249,9 @@ ) (module - ;; CHECK: (type $none_=>_ref|${}| (func_subtype (result (ref ${})) func)) + ;; CHECK: (type $none_=>_ref|${}| (func (result (ref ${})))) - ;; CHECK: (type ${} (struct_subtype data)) + ;; CHECK: (type ${} (struct )) (type ${} (struct_subtype data)) ;; CHECK: (func $func (type $none_=>_ref|${}|) (result (ref ${})) @@ -2283,15 +2283,15 @@ ) (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $A (struct_subtype (field i32) data)) + ;; CHECK: (type $A (struct (field i32))) (type $A (struct_subtype (field i32) data)) - ;; CHECK: (type $B (struct_subtype (field i64) data)) + ;; CHECK: (type $B (struct (field i64))) (type $B (struct_subtype (field i64) data)) - ;; CHECK: (type $C (struct_subtype (field f32) data)) + ;; CHECK: (type $C (struct (field f32))) (type $C (struct_subtype (field f32) data)) - ;; CHECK: (type $D (struct_subtype (field f64) data)) + ;; CHECK: (type $D (struct (field f64))) (type $D (struct_subtype (field f64) data)) ;; CHECK: (func $many-types (type $none_=>_none) @@ -2358,10 +2358,10 @@ ;; locations being properly noticed, both from global locations (the global's ;; init) and a function ($create). (module - ;; CHECK: (type $vtable-A (struct_subtype (field funcref) (field funcref) (field funcref) data)) + ;; CHECK: (type $vtable-A (struct (field funcref) (field funcref) (field funcref))) (type $vtable-A (struct_subtype (field (ref null func)) (field (ref null func)) (field (ref null func)) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global-A (ref $vtable-A) (struct.new $vtable-A ;; CHECK-NEXT: (ref.func $foo) @@ -2441,10 +2441,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct_subtype (field i32) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) @@ -2492,25 +2492,25 @@ ;; Casts. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct_subtype (field i32) data)) ;; CHECK: (type $substruct (struct_subtype (field i32) (field i32) $struct)) (type $substruct (struct_subtype (field i32) (field i32) $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (type $subsubstruct (struct_subtype (field i32) (field i32) (field i32) $substruct)) (type $subsubstruct (struct_subtype (field i32) (field i32) (field i32) $substruct)) - ;; CHECK: (type $other (struct_subtype data)) + ;; CHECK: (type $other (struct )) (type $other (struct_subtype data)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $i32_ref?|$struct|_ref?|$struct|_ref?|$other|_ref|$struct|_ref|$struct|_ref|$other|_=>_none (func_subtype (param i32 (ref null $struct) (ref null $struct) (ref null $other) (ref $struct) (ref $struct) (ref $other)) func)) + ;; CHECK: (type $i32_ref?|$struct|_ref?|$struct|_ref?|$other|_ref|$struct|_ref|$struct|_ref|$other|_=>_none (func (param i32 (ref null $struct) (ref null $struct) (ref null $other) (ref $struct) (ref $struct) (ref $other)))) - ;; CHECK: (type $none_=>_ref|eq| (func_subtype (result (ref eq)) func)) + ;; CHECK: (type $none_=>_ref|eq| (func (result (ref eq)))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -3391,11 +3391,11 @@ ;; Test ref.eq on globals. (module - ;; CHECK: (type $A (struct_subtype (field i32) data)) + ;; CHECK: (type $A (struct (field i32))) (type $A (struct_subtype (field i32) data)) (type $B (struct_subtype (field i32) $A)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $a (ref $A) (struct.new $A ;; CHECK-NEXT: (i32.const 0) @@ -3541,7 +3541,7 @@ (type $B (struct_subtype (ref $A) data)) (type $C (struct_subtype (ref $B) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -3570,16 +3570,16 @@ ) (module - ;; CHECK: (type $A (struct_subtype (field i32) data)) + ;; CHECK: (type $A (struct (field i32))) (type $A (struct_subtype (field i32) data)) - ;; CHECK: (type $B (struct_subtype (field (ref $A)) data)) + ;; CHECK: (type $B (struct (field (ref $A)))) (type $B (struct_subtype (ref $A) data)) - ;; CHECK: (type $C (struct_subtype (field (ref $B)) data)) + ;; CHECK: (type $C (struct (field (ref $B)))) (type $C (struct_subtype (ref $B) data)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -3623,14 +3623,14 @@ ;; ref.as* test. (module - ;; CHECK: (type $A (struct_subtype (field i32) data)) + ;; CHECK: (type $A (struct (field i32))) (type $A (struct_subtype (field i32) data)) ;; CHECK: (type $B (struct_subtype (field i32) (field f64) $A)) (type $B (struct_subtype (field i32) (field f64) $A)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|$B| (func_subtype (result (ref $B)) func)) + ;; CHECK: (type $none_=>_ref|$B| (func (result (ref $B)))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -3669,9 +3669,9 @@ ) (module - ;; CHECK: (type $A (struct_subtype (field i32) data)) + ;; CHECK: (type $A (struct (field i32))) (type $A (struct_subtype (field i32) data)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) ;; CHECK: (type $B (struct_subtype (field i32) (field i32) $A)) (type $B (struct_subtype (field i32) (field i32) $A)) @@ -3719,12 +3719,12 @@ ;; array.copy between types. (module - ;; CHECK: (type $bytes (array_subtype (mut anyref) data)) + ;; CHECK: (type $bytes (array (mut anyref))) (type $bytes (array (mut anyref))) - ;; CHECK: (type $chars (array_subtype (mut anyref) data)) + ;; CHECK: (type $chars (array (mut anyref))) (type $chars (array (mut anyref))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $bytes (ref null $bytes)) @@ -3804,12 +3804,12 @@ ;; value (a null) which we can optimize, but $bytes has two values and we ;; cannot optimize there. (module - ;; CHECK: (type $bytes (array_subtype (mut anyref) data)) + ;; CHECK: (type $bytes (array (mut anyref))) (type $bytes (array (mut anyref))) - ;; CHECK: (type $chars (array_subtype (mut anyref) data)) + ;; CHECK: (type $chars (array (mut anyref))) (type $chars (array (mut anyref))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $bytes (ref null $bytes)) @@ -3893,14 +3893,14 @@ (module (type $A (struct_subtype data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $B (array_subtype (mut anyref) data)) + ;; CHECK: (type $B (array (mut anyref))) (type $B (array (mut anyref))) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) - ;; CHECK: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; CHECK: (type $ref|$B|_=>_none (func (param (ref $B)))) ;; CHECK: (memory $0 10) @@ -4276,13 +4276,13 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct_subtype (mut i32) data)) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $something (mut (ref $struct)) (struct.new $struct ;; CHECK-NEXT: (i32.const 10) @@ -4352,13 +4352,13 @@ ;; As above, but we can no longer infer an exact type for the struct.set on the ;; global $something. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct_subtype (mut i32) data)) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $something (mut (ref $struct)) (struct.new $struct ;; CHECK-NEXT: (i32.const 10) @@ -4430,13 +4430,13 @@ ;; As above, but change the constants in the first field in all cases to 10. Now ;; we can optimize. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct_subtype (mut i32) data)) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $something (mut (ref $struct)) (struct.new $struct ;; CHECK-NEXT: (i32.const 10) @@ -4499,14 +4499,14 @@ ;; call_ref types (module - ;; CHECK: (type $i1 (func_subtype (param i32) func)) + ;; CHECK: (type $i1 (func (param i32))) (type $i1 (func (param i32))) - ;; CHECK: (type $i2 (func_subtype (param i32) func)) + ;; CHECK: (type $i2 (func (param i32))) (type $i2 (func (param i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -4633,7 +4633,7 @@ ;; Limited cone reads. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) @@ -4642,7 +4642,7 @@ - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "reads" (func $reads)) @@ -4740,14 +4740,14 @@ ;; As above, but now A and B agree on the value and not B and C. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) ;; CHECK: (type $C (struct_subtype (field (mut i32)) $B)) (type $C (struct_subtype (field (mut i32)) $B)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "reads" (func $reads)) @@ -4845,14 +4845,14 @@ ;; As above but now A has two subtypes, instead of a chain A->B->C (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) ;; CHECK: (type $C (struct_subtype (field (mut i32)) $A)) (type $C (struct_subtype (field (mut i32)) $A)) ;; This line changed. - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "reads" (func $reads)) @@ -4958,14 +4958,14 @@ ;; Cone writes. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) ;; CHECK: (type $C (struct_subtype (field (mut i32)) $B)) (type $C (struct_subtype (field (mut i32)) $B)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "write" (func $write)) @@ -5056,14 +5056,14 @@ ;; As above, but write a different value. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) ;; CHECK: (type $C (struct_subtype (field (mut i32)) $B)) (type $C (struct_subtype (field (mut i32)) $B)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "write" (func $write)) @@ -5155,14 +5155,14 @@ ;; As above, but write a different cone. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) ;; CHECK: (type $C (struct_subtype (field (mut i32)) $B)) (type $C (struct_subtype (field (mut i32)) $B)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (export "write" (func $write)) @@ -5255,17 +5255,17 @@ ;; Tests for proper inference of imported etc. values - we do know their type, ;; at least. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) (type $A (struct_subtype (field (mut i32)) data)) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) (type $B (struct_subtype (field (mut i32)) $A)) - ;; CHECK: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CHECK: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; CHECK: (type $none_=>_ref|$A| (func_subtype (result (ref $A)) func)) + ;; CHECK: (type $none_=>_ref|$A| (func (result (ref $A)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (global $A (ref $A))) (import "a" "b" (global $A (ref $A))) @@ -5463,11 +5463,11 @@ ;; Check that array.new_data and array.new_seg are handled properly. (module - ;; CHECK: (type $array-i8 (array_subtype i8 data)) + ;; CHECK: (type $array-i8 (array i8)) (type $array-i8 (array i8)) - ;; CHECK: (type $array-funcref (array_subtype funcref data)) + ;; CHECK: (type $array-funcref (array funcref)) (type $array-funcref (array funcref)) - ;; CHECK: (type $ref|$array-i8|_ref|$array-funcref|_=>_none (func_subtype (param (ref $array-i8) (ref $array-funcref)) func)) + ;; CHECK: (type $ref|$array-i8|_ref|$array-funcref|_=>_none (func (param (ref $array-i8) (ref $array-funcref)))) ;; CHECK: (data "hello") (data "hello") diff --git a/test/lit/passes/gufa-ssa.wast b/test/lit/passes/gufa-ssa.wast index 665342818..aaa6d3137 100644 --- a/test/lit/passes/gufa-ssa.wast +++ b/test/lit/passes/gufa-ssa.wast @@ -6,7 +6,7 @@ ;; CHECK: (export "test" (func $test)) - ;; CHECK: (func $test (param $x i32) + ;; CHECK: (func $test (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $y i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) diff --git a/test/lit/passes/gufa-tags.wast b/test/lit/passes/gufa-tags.wast index 8e43dc932..59d490b2e 100644 --- a/test/lit/passes/gufa-tags.wast +++ b/test/lit/passes/gufa-tags.wast @@ -16,7 +16,7 @@ ;; CHECK: (tag $tag$f32 (param f32)) (tag $tag$f32 (param f32)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f32) ;; CHECK-NEXT: (try $try @@ -76,7 +76,7 @@ ) ) - ;; CHECK: (func $bar (result i32) + ;; CHECK: (func $bar (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (try $try (result i32) ;; CHECK-NEXT: (do diff --git a/test/lit/passes/gufa-vs-cfp.wast b/test/lit/passes/gufa-vs-cfp.wast index 98db72833..359f0a83b 100644 --- a/test/lit/passes/gufa-vs-cfp.wast +++ b/test/lit/passes/gufa-vs-cfp.wast @@ -32,7 +32,7 @@ (module (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $impossible-get (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -52,7 +52,7 @@ (module (type $struct (struct i64)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -74,7 +74,7 @@ (module (type $struct (struct f32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -96,12 +96,12 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field f32) data)) + ;; CHECK: (type $struct (struct (field f32))) (type $struct (struct f32)) - ;; CHECK: (type $none_=>_f32 (func_subtype (result f32) func)) + ;; CHECK: (type $none_=>_f32 (func (result f32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result f32))) (import "a" "b" (func $import (result f32))) @@ -130,11 +130,11 @@ ;; Create in one function, get in another. The 10 should be forwarded to the ;; get. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -171,12 +171,12 @@ ;; As before, but with the order of functions reversed to check for any ordering ;; issues. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) ;; CHECK: (func $get (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -211,9 +211,9 @@ ;; Different values assigned in the same function, in different struct.news, ;; so we cannot optimize the struct.get away. (module - ;; CHECK: (type $struct (struct_subtype (field f32) data)) + ;; CHECK: (type $struct (struct (field f32))) (type $struct (struct f32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -249,11 +249,11 @@ ;; Different values assigned in different functions, and one is a struct.set. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -297,11 +297,11 @@ ;; As the last testcase, but the values happen to coincide, so we can optimize ;; the get into a constant. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -346,14 +346,14 @@ ;; Check that we look into the fallthrough value that is assigned. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)))) (type $struct (struct (mut f32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -422,7 +422,7 @@ ;; Test a function reference instead of a number. (module (type $struct (struct funcref)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $test) @@ -445,7 +445,7 @@ ;; Test for unreachable creations, sets, and gets. (module (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -494,13 +494,13 @@ ;; subtype, the get must trap anyhow (the reference it receives can ;; only be null in this closed world). (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) (type $substruct (struct_subtype i32 $struct)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -541,13 +541,13 @@ ;; however, cannot write to the subtype, so we still know that any reads from ;; the subtype must trap. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) (type $substruct (struct_subtype (mut i32) $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -600,11 +600,11 @@ ;; to a read of the subtype. Still, no actual instance of the subtype can ;; appear in the get, so we can optimize to an unreachable. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) (type $substruct (struct_subtype (mut i32) $struct)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) @@ -657,7 +657,7 @@ (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop @@ -679,11 +679,11 @@ ;; Subtyping: Create both a subtype and a supertype, with identical constants ;; for the shared field, and get the supertype. (module - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) @@ -733,11 +733,11 @@ ;; for the shared field, preventing optimization, as a get of the ;; supertype may receive an instance of the subtype. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) @@ -784,16 +784,16 @@ ;; shared between the types, but we only create the subtype with ;; one value, so we can optimize. (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) ;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct)) (type $substruct (struct_subtype i32 f64 $struct)) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -842,15 +842,15 @@ ;; As above, but add a set of $struct. The set prevents the optimization. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -914,15 +914,15 @@ ;; As above, but now the constant in the set agrees with the substruct value, ;; so we can optimize. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) ;; CHECK: (type $substruct (struct_subtype (field (mut i32)) (field f64) $struct)) (type $substruct (struct_subtype (mut i32) f64 $struct)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -991,7 +991,7 @@ ;; Multi-level subtyping, check that we propagate not just to the immediate ;; supertype but all the way as needed. (module - ;; CHECK: (type $struct1 (struct_subtype (field i32) data)) + ;; CHECK: (type $struct1 (struct (field i32))) (type $struct1 (struct_subtype i32 data)) ;; CHECK: (type $struct2 (struct_subtype (field i32) (field f64) $struct1)) @@ -1000,9 +1000,9 @@ ;; CHECK: (type $struct3 (struct_subtype (field i32) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype i32 f64 anyref $struct2)) - ;; CHECK: (type $none_=>_ref|$struct3| (func_subtype (result (ref $struct3)) func)) + ;; CHECK: (type $none_=>_ref|$struct3| (func (result (ref $struct3)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct3|) (result (ref $struct3)) ;; CHECK-NEXT: (struct.new $struct3 @@ -1132,7 +1132,7 @@ ;; different values in the sub-most type. Create the top and bottom types, but ;; not the middle one. (module - ;; CHECK: (type $struct1 (struct_subtype (field i32) (field i32) data)) + ;; CHECK: (type $struct1 (struct (field i32) (field i32))) (type $struct1 (struct i32 i32)) ;; CHECK: (type $struct2 (struct_subtype (field i32) (field i32) (field f64) (field f64) $struct1)) @@ -1141,13 +1141,13 @@ ;; CHECK: (type $struct3 (struct_subtype (field i32) (field i32) (field f64) (field f64) (field anyref) (field anyref) $struct2)) (type $struct3 (struct_subtype i32 i32 f64 f64 anyref anyref $struct2)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_anyref (func_subtype (result anyref) func)) + ;; CHECK: (type $none_=>_anyref (func (result anyref))) - ;; CHECK: (type $none_=>_ref|$struct1| (func_subtype (result (ref $struct1)) func)) + ;; CHECK: (type $none_=>_ref|$struct1| (func (result (ref $struct1)))) - ;; CHECK: (type $none_=>_ref|$struct3| (func_subtype (result (ref $struct3)) func)) + ;; CHECK: (type $none_=>_ref|$struct3| (func (result (ref $struct3)))) ;; CHECK: (import "a" "b" (func $import (result anyref))) (import "a" "b" (func $import (result anyref))) @@ -1366,22 +1366,22 @@ ;; Multi-level subtyping with a different value in the middle of the chain. (module - ;; CHECK: (type $struct1 (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct1 (struct (field (mut i32)))) (type $struct1 (struct (mut i32))) ;; CHECK: (type $struct2 (struct_subtype (field (mut i32)) (field f64) $struct1)) (type $struct2 (struct_subtype (mut i32) f64 $struct1)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype (mut i32) f64 anyref $struct2)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|$struct1| (func_subtype (result (ref $struct1)) func)) + ;; CHECK: (type $none_=>_ref|$struct1| (func (result (ref $struct1)))) - ;; CHECK: (type $none_=>_ref|$struct2| (func_subtype (result (ref $struct2)) func)) + ;; CHECK: (type $none_=>_ref|$struct2| (func (result (ref $struct2)))) - ;; CHECK: (type $none_=>_ref|$struct3| (func_subtype (result (ref $struct3)) func)) + ;; CHECK: (type $none_=>_ref|$struct3| (func (result (ref $struct3)))) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -1671,22 +1671,22 @@ ;; but also a set. We can see that the set just affects the middle class, ;; though, so it is not a problem. (module - ;; CHECK: (type $struct1 (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct1 (struct (field (mut i32)))) (type $struct1 (struct (mut i32))) ;; CHECK: (type $struct2 (struct_subtype (field (mut i32)) (field f64) $struct1)) (type $struct2 (struct_subtype (mut i32) f64 $struct1)) ;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype (mut i32) f64 anyref $struct2)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|$struct1| (func_subtype (result (ref $struct1)) func)) + ;; CHECK: (type $none_=>_ref|$struct1| (func (result (ref $struct1)))) - ;; CHECK: (type $none_=>_ref|$struct2| (func_subtype (result (ref $struct2)) func)) + ;; CHECK: (type $none_=>_ref|$struct2| (func (result (ref $struct2)))) - ;; CHECK: (type $none_=>_ref|$struct3| (func_subtype (result (ref $struct3)) func)) + ;; CHECK: (type $none_=>_ref|$struct3| (func (result (ref $struct3)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -1787,22 +1787,22 @@ ;; As above, but the set is of a different value. (module - ;; CHECK: (type $struct1 (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct1 (struct (field (mut i32)))) (type $struct1 (struct (mut i32))) ;; CHECK: (type $struct2 (struct_subtype (field (mut i32)) (field f64) $struct1)) (type $struct2 (struct_subtype (mut i32) f64 $struct1)) ;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2)) (type $struct3 (struct_subtype (mut i32) f64 anyref $struct2)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $none_=>_ref|$struct1| (func_subtype (result (ref $struct1)) func)) + ;; CHECK: (type $none_=>_ref|$struct1| (func (result (ref $struct1)))) - ;; CHECK: (type $none_=>_ref|$struct2| (func_subtype (result (ref $struct2)) func)) + ;; CHECK: (type $none_=>_ref|$struct2| (func (result (ref $struct2)))) - ;; CHECK: (type $none_=>_ref|$struct3| (func_subtype (result (ref $struct3)) func)) + ;; CHECK: (type $none_=>_ref|$struct3| (func (result (ref $struct3)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) @@ -1902,12 +1902,12 @@ ;; Test for a struct with multiple fields, some of which are constant and hence ;; optimizable, and some not. Also test that some have the same type. (module - ;; CHECK: (type $struct (struct_subtype (field i32) (field f64) (field i32) (field f64) (field i32) data)) + ;; CHECK: (type $struct (struct (field i32) (field f64) (field i32) (field f64) (field i32))) (type $struct (struct i32 f64 i32 f64 i32)) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -2014,7 +2014,7 @@ ;; sets, and the final subtype C has a create and a get. The set to A should ;; apply to it, preventing optimization. (module - ;; CHECK: (type $A (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $A (struct (field (mut i32)))) ;; CHECK: (type $B (struct_subtype (field (mut i32)) $A)) @@ -2025,9 +2025,9 @@ (type $B (struct_subtype (mut i32) $A)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $none_=>_ref|$C| (func_subtype (result (ref $C)) func)) + ;; CHECK: (type $none_=>_ref|$C| (func (result (ref $C)))) ;; CHECK: (func $create-C (type $none_=>_ref|$C|) (result (ref $C)) ;; CHECK-NEXT: (struct.new $C @@ -2077,12 +2077,12 @@ ;; Copies of a field to itself can be ignored. As a result, we can optimize both ;; of the gets here. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new_default $struct) @@ -2132,16 +2132,16 @@ ;; type) but in a different struct. The value in both structs is the same, so ;; we can optimize. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)) (field (mut i32)))) (type $struct (struct (mut f32) (mut i32))) - ;; CHECK: (type $other (struct_subtype (field (mut f64)) (field (mut i32)) data)) + ;; CHECK: (type $other (struct (field (mut f64)) (field (mut i32)))) (type $other (struct (mut f64) (mut i32))) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_ref|$other| (func_subtype (result (ref $other)) func)) + ;; CHECK: (type $none_=>_ref|$other| (func (result (ref $other)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create-struct (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -2208,16 +2208,16 @@ ;; As above, but each struct has a different value, so copying between them ;; inhibits one optimization. (module - ;; CHECK: (type $struct (struct_subtype (field (mut f32)) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut f32)) (field (mut i32)))) (type $struct (struct (mut f32) (mut i32))) - ;; CHECK: (type $other (struct_subtype (field (mut f64)) (field (mut i32)) data)) + ;; CHECK: (type $other (struct (field (mut f64)) (field (mut i32)))) (type $other (struct (mut f64) (mut i32))) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_ref|$other| (func_subtype (result (ref $other)) func)) + ;; CHECK: (type $none_=>_ref|$other| (func (result (ref $other)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create-struct (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -2280,12 +2280,12 @@ ;; Similar to the above, but different fields within the same struct. (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)) (field (mut i32)))) (type $struct (struct (mut i32) (mut i32))) - ;; CHECK: (type $none_=>_ref|$struct| (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $none_=>_ref|$struct| (func (result (ref $struct)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $create (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (struct.new $struct @@ -2335,11 +2335,11 @@ ) (module - ;; CHECK: (type $A (struct_subtype data)) + ;; CHECK: (type $A (struct )) (type $A (struct)) (type $B (struct (ref $A))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global (ref $A) (struct.new_default $A)) (global $global (ref $A) (struct.new $A)) @@ -2367,7 +2367,7 @@ (module (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (import "a" "b" (global $global i32)) (import "a" "b" (global $global i32)) @@ -2391,7 +2391,7 @@ (module (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2418,7 +2418,7 @@ (module (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global (mut i32) (i32.const 42)) (global $global (mut i32) (i32.const 42)) @@ -2442,10 +2442,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field i32) data)) + ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global (mut i32) (i32.const 42)) (global $global (mut i32) (i32.const 42)) @@ -2479,10 +2479,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2519,10 +2519,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2564,10 +2564,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (global $global i32 (i32.const 42)) (global $global i32 (i32.const 42)) @@ -2610,15 +2610,15 @@ ;; Test a global type other than i32. Arrays of structs are a realistic case ;; as they are used to implement itables. - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct funcref)) - ;; CHECK: (type $itable (array_subtype (ref $vtable) data)) + ;; CHECK: (type $itable (array (ref $vtable))) (type $itable (array (ref $vtable))) (type $object (struct (field $itable (ref $itable)))) - ;; CHECK: (type $none_=>_funcref (func_subtype (result funcref) func)) + ;; CHECK: (type $none_=>_funcref (func (result funcref))) ;; CHECK: (global $global (ref $itable) (array.init_static $itable ;; CHECK-NEXT: (struct.new $vtable diff --git a/test/lit/passes/gufa.wast b/test/lit/passes/gufa.wast index d9b11f779..bf0f39833 100644 --- a/test/lit/passes/gufa.wast +++ b/test/lit/passes/gufa.wast @@ -16,7 +16,7 @@ ;; CHECK: (export "param-no" (func $param-no)) - ;; CHECK: (func $never-called (param $param i32) (result i32) + ;; CHECK: (func $never-called (type $i32_=>_i32) (param $param i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $never-called (param $param i32) (result i32) @@ -26,14 +26,14 @@ (local.get $param) ) - ;; CHECK: (func $foo (result i32) + ;; CHECK: (func $foo (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) (func $foo (result i32) (i32.const 1) ) - ;; CHECK: (func $bar + ;; CHECK: (func $bar (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -66,7 +66,7 @@ ) ) - ;; CHECK: (func $baz + ;; CHECK: (func $baz (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (select ;; CHECK-NEXT: (block (result i32) @@ -101,7 +101,7 @@ ) ) - ;; CHECK: (func $return (result i32) + ;; CHECK: (func $return (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (return @@ -123,7 +123,7 @@ (i32.const 2) ) - ;; CHECK: (func $call-return + ;; CHECK: (func $call-return (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $return) ;; CHECK-NEXT: ) @@ -136,7 +136,7 @@ ) ) - ;; CHECK: (func $return-same (result i32) + ;; CHECK: (func $return-same (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (return @@ -159,7 +159,7 @@ (i32.const 1) ) - ;; CHECK: (func $call-return-same + ;; CHECK: (func $call-return-same (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -176,7 +176,7 @@ ) ) - ;; CHECK: (func $local-no (result i32) + ;; CHECK: (func $local-no (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (call $import) @@ -199,7 +199,7 @@ (local.get $x) ) - ;; CHECK: (func $local-yes (result i32) + ;; CHECK: (func $local-yes (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (call $import) @@ -222,7 +222,7 @@ (local.get $x) ) - ;; CHECK: (func $param-no (param $param i32) (result i32) + ;; CHECK: (func $param-no (type $i32_=>_i32) (param $param i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $param) ;; CHECK-NEXT: (local.set $param @@ -244,7 +244,7 @@ (local.get $param) ) - ;; CHECK: (func $param-yes (param $param i32) (result i32) + ;; CHECK: (func $param-yes (type $i32_=>_i32) (param $param i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (local.set $param @@ -267,7 +267,7 @@ (local.get $param) ) - ;; CHECK: (func $cycle (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $cycle (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -320,7 +320,7 @@ ) ) - ;; CHECK: (func $cycle-2 (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $cycle-2 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -371,7 +371,7 @@ ) ) - ;; CHECK: (func $cycle-3 (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $cycle-3 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -427,7 +427,7 @@ ) ) - ;; CHECK: (func $cycle-4 (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $cycle-4 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $cycle-4 ;; CHECK-NEXT: (i32.const 1337) @@ -467,7 +467,7 @@ ) ) - ;; CHECK: (func $cycle-5 (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $cycle-5 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -516,7 +516,7 @@ ) ) - ;; CHECK: (func $blocks + ;; CHECK: (func $blocks (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -592,7 +592,7 @@ ;; CHECK: (export "table" (table $0)) (export "table" (table 0)) - ;; CHECK: (func $reffed (param $x i32) + ;; CHECK: (func $reffed (type $i) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -605,7 +605,7 @@ ) ) - ;; CHECK: (func $do-calls + ;; CHECK: (func $do-calls (type $none_=>_none) ;; CHECK-NEXT: (call $reffed ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -642,7 +642,7 @@ ;; CHECK: (elem (i32.const 0) $reffed) - ;; CHECK: (func $reffed (param $x i32) + ;; CHECK: (func $reffed (type $i) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -653,7 +653,7 @@ ) ) - ;; CHECK: (func $do-calls + ;; CHECK: (func $do-calls (type $none_=>_none) ;; CHECK-NEXT: (call $reffed ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -689,7 +689,7 @@ ;; CHECK: (elem (i32.const 0) $reffed) - ;; CHECK: (func $reffed (param $x i32) + ;; CHECK: (func $reffed (type $i) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -700,7 +700,7 @@ ) ) - ;; CHECK: (func $do-calls + ;; CHECK: (func $do-calls (type $none_=>_none) ;; CHECK-NEXT: (call_indirect $0 (type $i) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: (i32.const 0) @@ -739,7 +739,7 @@ ;; CHECK: (elem (i32.const 0) $reffed) - ;; CHECK: (func $reffed (param $x i32) + ;; CHECK: (func $reffed (type $i) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -750,7 +750,7 @@ ) ) - ;; CHECK: (func $do-calls + ;; CHECK: (func $do-calls (type $none_=>_none) ;; CHECK-NEXT: (call_indirect $0 (type $i) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: (i32.const 0) @@ -791,7 +791,7 @@ ;; CHECK: (elem (i32.const 0) $reffed) - ;; CHECK: (func $reffed (param $x i32) + ;; CHECK: (func $reffed (type $i) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -802,7 +802,7 @@ ) ) - ;; CHECK: (func $do-calls + ;; CHECK: (func $do-calls (type $none_=>_none) ;; CHECK-NEXT: (call_indirect $0 (type $i) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: (i32.const 0) @@ -829,7 +829,7 @@ ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (func $const (result i32) + ;; CHECK: (func $const (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) (func $const (result i32) @@ -837,7 +837,7 @@ (i32.const 42) ) - ;; CHECK: (func $retcall (result i32) + ;; CHECK: (func $retcall (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (return_call $const) ;; CHECK-NEXT: ) (func $retcall (result i32) @@ -845,7 +845,7 @@ (return_call $const) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -872,14 +872,14 @@ ;; CHECK: (import "a" "b" (func $import (result i32))) (import "a" "b" (func $import (result i32))) - ;; CHECK: (func $internal (result i32) + ;; CHECK: (func $internal (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) (func $internal (result i32) (i32.const 42) ) - ;; CHECK: (func $calls + ;; CHECK: (func $calls (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: ) @@ -942,7 +942,7 @@ ;; CHECK: (export "foo" (func $foo)) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (call $call-without-effects ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (ref.func $target-keep) @@ -965,7 +965,7 @@ ) ) - ;; CHECK: (func $target-keep (param $x i32) + ;; CHECK: (func $target-keep (type $A) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -976,7 +976,7 @@ ) ) - ;; CHECK: (func $target-drop (param $x i32) + ;; CHECK: (func $target-drop (type $A) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) @@ -1012,7 +1012,7 @@ ;; CHECK: (export "foo" (func $foo)) - ;; CHECK: (func $foo (param $A (ref null $A)) + ;; CHECK: (func $foo (type $ref?|$A|_=>_none) (param $A (ref null $A)) ;; CHECK-NEXT: (call $call-without-effects ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (local.get $A) @@ -1041,7 +1041,7 @@ ) ) - ;; CHECK: (func $target-keep (param $x i32) + ;; CHECK: (func $target-keep (type $A) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -1052,7 +1052,7 @@ ) ) - ;; CHECK: (func $target-keep-2 (param $x i32) + ;; CHECK: (func $target-keep-2 (type $A) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -1083,7 +1083,7 @@ ;; CHECK: (export "exported-immutable" (global $exported-immutable)) (export "exported-immutable" (global $exported-immutable)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (global.get $exported-mutable) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/heap2local.wast b/test/lit/passes/heap2local.wast index aace567f7..1027420c4 100644 --- a/test/lit/passes/heap2local.wast +++ b/test/lit/passes/heap2local.wast @@ -6,15 +6,15 @@ (module ;; CHECK: (type $struct.A (struct (field (mut i32)) (field (mut f64)))) - ;; NOMNL: (type $struct.A (struct_subtype (field (mut i32)) (field (mut f64)) data)) + ;; NOMNL: (type $struct.A (struct (field (mut i32)) (field (mut f64)))) (type $struct.A (struct (field (mut i32)) (field (mut f64)))) ;; CHECK: (type $struct.recursive (struct (field (mut (ref null $struct.recursive))))) ;; CHECK: (type $struct.packed (struct (field (mut i8)))) - ;; NOMNL: (type $struct.recursive (struct_subtype (field (mut (ref null $struct.recursive))) data)) + ;; NOMNL: (type $struct.recursive (struct (field (mut (ref null $struct.recursive))))) - ;; NOMNL: (type $struct.packed (struct_subtype (field (mut i8)) data)) + ;; NOMNL: (type $struct.packed (struct (field (mut i8)))) (type $struct.packed (struct (field (mut i8)))) (type $struct.nondefaultable (struct (field (ref $struct.A)))) @@ -23,7 +23,7 @@ (type $struct.nonnullable (struct (field (ref $struct.A)))) - ;; CHECK: (func $simple + ;; CHECK: (func $simple (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (drop @@ -61,7 +61,7 @@ ) ) - ;; CHECK: (func $to-local + ;; CHECK: (func $to-local (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -104,7 +104,7 @@ ) ) - ;; CHECK: (func $one-get + ;; CHECK: (func $one-get (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (drop @@ -157,7 +157,7 @@ ) ) - ;; CHECK: (func $one-get-b + ;; CHECK: (func $one-get-b (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (drop @@ -206,7 +206,7 @@ ) ) - ;; CHECK: (func $one-set + ;; CHECK: (func $one-set (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (drop @@ -250,7 +250,7 @@ ) ) - ;; CHECK: (func $packed + ;; CHECK: (func $packed (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (struct.get_u $struct.packed 0 ;; CHECK-NEXT: (struct.new_default $struct.packed) @@ -273,7 +273,7 @@ ) ) - ;; CHECK: (func $with-init-values + ;; CHECK: (func $with-init-values (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (local $2 i32) @@ -342,7 +342,7 @@ ) ) - ;; CHECK: (func $ignore-unreachable + ;; CHECK: (func $ignore-unreachable (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) ;; CHECK-NEXT: (drop @@ -391,7 +391,7 @@ ) ) - ;; CHECK: (func $nondefaultable + ;; CHECK: (func $nondefaultable (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref $struct.A)) ;; CHECK-NEXT: (local $1 (ref $struct.A)) ;; CHECK-NEXT: (drop @@ -442,7 +442,7 @@ ) ) - ;; CHECK: (func $simple-one-local-set + ;; CHECK: (func $simple-one-local-set (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -504,7 +504,7 @@ ) ) - ;; CHECK: (func $simple-one-local-get (result f64) + ;; CHECK: (func $simple-one-local-get (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -559,7 +559,7 @@ ) ) - ;; CHECK: (func $send-ref (param $0 (ref null $struct.A)) + ;; CHECK: (func $send-ref (type $ref?|$struct.A|_=>_none) (param $0 (ref null $struct.A)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $send-ref (type $ref?|$struct.A|_=>_none) (param $0 (ref null $struct.A)) @@ -568,7 +568,7 @@ (func $send-ref (param (ref null $struct.A)) ) - ;; CHECK: (func $safe-to-drop (result f64) + ;; CHECK: (func $safe-to-drop (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -632,7 +632,7 @@ ) ) - ;; CHECK: (func $escape-via-call (result f64) + ;; CHECK: (func $escape-via-call (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -670,7 +670,7 @@ ) ) - ;; CHECK: (func $safe-to-drop-multiflow (result f64) + ;; CHECK: (func $safe-to-drop-multiflow (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -748,7 +748,7 @@ ) ) - ;; CHECK: (func $escape-after-multiflow (result f64) + ;; CHECK: (func $escape-after-multiflow (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -800,7 +800,7 @@ ) ) - ;; CHECK: (func $non-exclusive-set (result f64) + ;; CHECK: (func $non-exclusive-set (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (select (result (ref $struct.A)) @@ -842,7 +842,7 @@ ) ) - ;; CHECK: (func $local-copies (result f64) + ;; CHECK: (func $local-copies (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -906,7 +906,7 @@ ) ) - ;; CHECK: (func $local-copies-2 + ;; CHECK: (func $local-copies-2 (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $ref-2 (ref null $struct.A)) ;; CHECK-NEXT: (local $2 i32) @@ -1001,7 +1001,7 @@ ) ) - ;; CHECK: (func $local-copies-conditional (param $x i32) (result f64) + ;; CHECK: (func $local-copies-conditional (type $i32_=>_f64) (param $x i32) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 f64) @@ -1075,7 +1075,7 @@ ) ) - ;; CHECK: (func $block-value (result f64) + ;; CHECK: (func $block-value (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -1146,7 +1146,7 @@ ) ) - ;; CHECK: (func $non-exclusive-get (param $x i32) (result f64) + ;; CHECK: (func $non-exclusive-get (type $i32_=>_f64) (param $x i32) (result f64) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -1193,7 +1193,7 @@ ) ) - ;; CHECK: (func $tee (result i32) + ;; CHECK: (func $tee (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -1237,7 +1237,7 @@ ) ) - ;; CHECK: (func $tee-set + ;; CHECK: (func $tee-set (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.recursive)) ;; CHECK-NEXT: (local $1 (ref null $struct.recursive)) ;; CHECK-NEXT: (drop @@ -1278,7 +1278,7 @@ ) ) - ;; CHECK: (func $set-value (param $struct.recursive (ref null $struct.recursive)) + ;; CHECK: (func $set-value (type $ref?|$struct.recursive|_=>_none) (param $struct.recursive (ref null $struct.recursive)) ;; CHECK-NEXT: (local $ref (ref null $struct.recursive)) ;; CHECK-NEXT: (struct.set $struct.recursive 0 ;; CHECK-NEXT: (local.get $struct.recursive) @@ -1308,7 +1308,7 @@ ) ) - ;; CHECK: (func $initialize-with-reference + ;; CHECK: (func $initialize-with-reference (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref null $struct.recursive)) ;; CHECK-NEXT: (local $1 (ref null $struct.recursive)) ;; CHECK-NEXT: (local $2 (ref null $struct.recursive)) @@ -1378,7 +1378,7 @@ ) ) - ;; CHECK: (func $escape-flow-out (result anyref) + ;; CHECK: (func $escape-flow-out (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (struct.set $struct.A 0 ;; CHECK-NEXT: (local.tee $ref @@ -1410,7 +1410,7 @@ (local.get $ref) ) - ;; CHECK: (func $escape-return (result anyref) + ;; CHECK: (func $escape-return (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (struct.set $struct.A 0 ;; CHECK-NEXT: (local.tee $ref @@ -1448,7 +1448,7 @@ ) ) - ;; CHECK: (func $non-nullable (param $a (ref $struct.A)) + ;; CHECK: (func $non-nullable (type $ref|$struct.A|_=>_none) (param $a (ref $struct.A)) ;; CHECK-NEXT: (local $1 (ref $struct.A)) ;; CHECK-NEXT: (local $2 (ref $struct.A)) ;; CHECK-NEXT: (drop @@ -1500,7 +1500,7 @@ ) ) - ;; CHECK: (func $before-loop-use-multi (param $x i32) + ;; CHECK: (func $before-loop-use-multi (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 f64) @@ -1745,7 +1745,7 @@ ) ) - ;; CHECK: (func $multi-separate + ;; CHECK: (func $multi-separate (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 f64) ;; CHECK-NEXT: (local $2 i32) @@ -1876,7 +1876,7 @@ ) ) - ;; CHECK: (func $multi-separate-same-local-index + ;; CHECK: (func $multi-separate-same-local-index (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -1988,7 +1988,7 @@ ) ) - ;; CHECK: (func $multi-separate-different-local-index-overlapping-lifetimes + ;; CHECK: (func $multi-separate-different-local-index-overlapping-lifetimes (type $none_=>_none) ;; CHECK-NEXT: (local $ref1 (ref null $struct.A)) ;; CHECK-NEXT: (local $ref2 (ref null $struct.A)) ;; CHECK-NEXT: (local $2 i32) @@ -2103,7 +2103,7 @@ ) ) - ;; CHECK: (func $get-through-block (result f64) + ;; CHECK: (func $get-through-block (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -2159,7 +2159,7 @@ ) ) - ;; CHECK: (func $branch-to-block (result f64) + ;; CHECK: (func $branch-to-block (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -2213,7 +2213,7 @@ ) ) - ;; CHECK: (func $branch-to-block-no-fallthrough (result f64) + ;; CHECK: (func $branch-to-block-no-fallthrough (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -2298,7 +2298,7 @@ ) ) - ;; CHECK: (func $two-branches (result f64) + ;; CHECK: (func $two-branches (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -2374,7 +2374,7 @@ ) ) - ;; CHECK: (func $two-branches-b (result f64) + ;; CHECK: (func $two-branches-b (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -2451,7 +2451,7 @@ ) ) - ;; CHECK: (func $br_if_flow (result f64) + ;; CHECK: (func $br_if_flow (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (struct.new_default $struct.A) @@ -2510,7 +2510,7 @@ ) ) - ;; CHECK: (func $ref-as-non-null + ;; CHECK: (func $ref-as-non-null (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -2590,7 +2590,7 @@ ) ) - ;; CHECK: (func $ref-as-non-null-through-local (result i32) + ;; CHECK: (func $ref-as-non-null-through-local (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $ref (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -2661,7 +2661,7 @@ ) ) - ;; CHECK: (func $br_if-allocation (result f64) + ;; CHECK: (func $br_if-allocation (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -2751,7 +2751,7 @@ ) ) - ;; CHECK: (func $pass-through-loop + ;; CHECK: (func $pass-through-loop (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -2809,7 +2809,7 @@ ) ) - ;; CHECK: (func $non-nullable-local (result anyref) + ;; CHECK: (func $non-nullable-local (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (local $0 (ref null $struct.A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) diff --git a/test/lit/passes/inlining-eh.wast b/test/lit/passes/inlining-eh.wast index 7d804805e..cb5b1bda8 100644 --- a/test/lit/passes/inlining-eh.wast +++ b/test/lit/passes/inlining-eh.wast @@ -20,7 +20,7 @@ ;; Properly ensure unique try labels after an inlining - ;; CHECK: (func $caller-with-label (param $x i32) + ;; CHECK: (func $caller-with-label (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (loop $label ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$callee-with-label @@ -51,7 +51,7 @@ ) ;; --------------------------------------------------------------------------- - ;; CHECK: (func $callee-with-try-delegate + ;; CHECK: (func $callee-with-try-delegate (type $none_=>_none) ;; CHECK-NEXT: (try $label$3 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -68,7 +68,7 @@ ;; For now, do not inline a try-delegate - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $callee-with-try-delegate) ;; CHECK-NEXT: ) (func $caller @@ -82,7 +82,7 @@ ;; Properly support inlining into a function with a try-delegate - ;; CHECK: (func $caller-with-try-delegate (result i32) + ;; CHECK: (func $caller-with-try-delegate (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try $label$3 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -107,7 +107,7 @@ ;; --------------------------------------------------------------------------- (func $callee-b (param i32)) - ;; CHECK: (func $caller-with-pop + ;; CHECK: (func $caller-with-pop (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (try $try diff --git a/test/lit/passes/inlining-gc.wast b/test/lit/passes/inlining-gc.wast index cebdbd052..0dac4cc9a 100644 --- a/test/lit/passes/inlining-gc.wast +++ b/test/lit/passes/inlining-gc.wast @@ -2,7 +2,7 @@ ;; RUN: wasm-opt %s --inlining --enable-gc-nn-locals -all -S -o - | filecheck %s (module - ;; CHECK: (func $caller-nullable + ;; CHECK: (func $caller-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $0 funcref) ;; CHECK-NEXT: (block $__inlined_func$target-nullable ;; CHECK-NEXT: (local.set $0 @@ -24,7 +24,7 @@ (local $1 (ref null func)) ) - ;; CHECK: (func $caller-non-nullable + ;; CHECK: (func $caller-non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref func)) ;; CHECK-NEXT: (block $__inlined_func$target-non-nullable ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/inlining-optimizing.wast b/test/lit/passes/inlining-optimizing.wast index a7b671f10..c72d6a88b 100644 --- a/test/lit/passes/inlining-optimizing.wast +++ b/test/lit/passes/inlining-optimizing.wast @@ -5,13 +5,13 @@ ;; CHECK: (type $none_=>_none (func)) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $0 (nop) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) ;; CHECK-NEXT: (drop diff --git a/test/lit/passes/inlining_all-features.wast b/test/lit/passes/inlining_all-features.wast index 9b3a426d5..d26a2aa9f 100644 --- a/test/lit/passes/inlining_all-features.wast +++ b/test/lit/passes/inlining_all-features.wast @@ -11,9 +11,9 @@ ;; CHECK: (elem declare func $foo) ;; CHECK: (export "ref_func_test" (func $ref_func_test)) - ;; NOMNL: (type $none_=>_none (func_subtype func)) + ;; NOMNL: (type $none_=>_none (func)) - ;; NOMNL: (type $none_=>_funcref (func_subtype (result funcref) func)) + ;; NOMNL: (type $none_=>_funcref (func (result funcref))) ;; NOMNL: (elem declare func $foo) @@ -22,7 +22,7 @@ ;; $foo should not be removed after being inlined, because there is 'ref.func' ;; instruction that refers to it - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $foo (type $none_=>_none) @@ -30,7 +30,7 @@ ;; NOMNL-NEXT: ) (func $foo) - ;; CHECK: (func $ref_func_test (result funcref) + ;; CHECK: (func $ref_func_test (type $none_=>_funcref) (result funcref) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$foo ;; CHECK-NEXT: (nop) @@ -58,12 +58,12 @@ ;; CHECK: (type $none_=>_i32 (func (result i32))) ;; CHECK: (global $global$0 (mut funcref) (ref.func $0)) - ;; NOMNL: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; NOMNL: (type $none_=>_i32 (func (result i32))) ;; NOMNL: (global $global$0 (mut funcref) (ref.func $0)) (global $global$0 (mut funcref) (ref.func $0)) - ;; CHECK: (func $0 (result i32) + ;; CHECK: (func $0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1337) ;; CHECK-NEXT: ) ;; NOMNL: (func $0 (type $none_=>_i32) (result i32) @@ -73,7 +73,7 @@ (i32.const 1337) ) - ;; CHECK: (func $1 (result i32) + ;; CHECK: (func $1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $__inlined_func$0 (result i32) ;; CHECK-NEXT: (i32.const 1337) ;; CHECK-NEXT: ) @@ -94,12 +94,12 @@ ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (start $0) - ;; NOMNL: (type $none_=>_none (func_subtype func)) + ;; NOMNL: (type $none_=>_none (func)) ;; NOMNL: (start $0) (start $0) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $0 (type $none_=>_none) @@ -109,7 +109,7 @@ (nop) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (block $__inlined_func$0 ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -127,7 +127,7 @@ ;; inline a return_call_ref (module ;; CHECK: (type $none_=>_none (func)) - ;; NOMNL: (type $none_=>_none (func_subtype func)) + ;; NOMNL: (type $none_=>_none (func)) (type $none_=>_none (func)) ;; CHECK: (export "func_36_invoker" (func $1)) @@ -139,7 +139,7 @@ (ref.null $none_=>_none) ) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (block $__inlined_func$0 ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (br $__inlined_func$0) @@ -166,7 +166,7 @@ ;; CHECK: (elem declare func $1) - ;; CHECK: (func $1 (result (ref func)) + ;; CHECK: (func $1 (type $none_=>_ref|func|) (result (ref func)) ;; CHECK-NEXT: (local $0 (ref func)) ;; CHECK-NEXT: (block $__inlined_func$0 (result (ref func)) ;; CHECK-NEXT: (local.set $0 @@ -175,7 +175,7 @@ ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; NOMNL: (type $none_=>_ref|func| (func_subtype (result (ref func)) func)) + ;; NOMNL: (type $none_=>_ref|func| (func (result (ref func)))) ;; NOMNL: (elem declare func $1) diff --git a/test/lit/passes/inlining_splitting.wast b/test/lit/passes/inlining_splitting.wast index c114d4551..be936f7d8 100644 --- a/test/lit/passes/inlining_splitting.wast +++ b/test/lit/passes/inlining_splitting.wast @@ -46,7 +46,7 @@ ) ) - ;; CHECK: (func $call-maybe-work-hard + ;; CHECK: (func $call-maybe-work-hard (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i32) @@ -122,7 +122,7 @@ ) ) - ;; CHECK: (func $call-just-if + ;; CHECK: (func $call-just-if (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block @@ -157,7 +157,7 @@ (call $just-if (i32.const 2)) ) - ;; CHECK: (func $br-to-toplevel (param $x i32) + ;; CHECK: (func $br-to-toplevel (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (block $toplevel ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) @@ -186,7 +186,7 @@ ) ) - ;; CHECK: (func $call-br-to-toplevel + ;; CHECK: (func $call-br-to-toplevel (type $none_=>_none) ;; CHECK-NEXT: (call $br-to-toplevel ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -211,7 +211,7 @@ ) ) - ;; CHECK: (func $call-nondefaultable-param + ;; CHECK: (func $call-nondefaultable-param (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 (ref $struct)) ;; CHECK-NEXT: (block $__inlined_func$nondefaultable-param @@ -252,7 +252,7 @@ ) ) - ;; CHECK: (func $call-many-params + ;; CHECK: (func $call-many-params (type $none_=>_none) ;; CHECK-NEXT: (local $0 i64) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 f64) @@ -330,7 +330,7 @@ ) ) - ;; CHECK: (func $call-condition-eqz + ;; CHECK: (func $call-condition-eqz (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block @@ -385,7 +385,7 @@ ) ) - ;; CHECK: (func $call-condition-global + ;; CHECK: (func $call-condition-global (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$byn-split-inlineable-A$condition-global ;; CHECK-NEXT: (if @@ -426,7 +426,7 @@ ) ) - ;; CHECK: (func $call-condition-ref.is + ;; CHECK: (func $call-condition-ref.is (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (block @@ -469,7 +469,7 @@ (call $condition-ref.is (ref.null any)) ) - ;; CHECK: (func $condition-disallow-binary (param $x i32) + ;; CHECK: (func $condition-disallow-binary (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $x) @@ -497,7 +497,7 @@ ) ) - ;; CHECK: (func $call-condition-disallow-binary + ;; CHECK: (func $call-condition-disallow-binary (type $none_=>_none) ;; CHECK-NEXT: (call $condition-disallow-binary ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -510,7 +510,7 @@ (call $condition-disallow-binary (i32.const 1)) ) - ;; CHECK: (func $condition-disallow-unreachable (param $x i32) + ;; CHECK: (func $condition-disallow-unreachable (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (unreachable) @@ -536,7 +536,7 @@ ) ) - ;; CHECK: (func $call-condition-disallow-unreachable + ;; CHECK: (func $call-condition-disallow-unreachable (type $none_=>_none) ;; CHECK-NEXT: (call $condition-disallow-unreachable ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -549,7 +549,7 @@ (call $condition-disallow-unreachable (i32.const 1)) ) - ;; CHECK: (func $start-used-globally + ;; CHECK: (func $start-used-globally (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $glob) ;; CHECK-NEXT: (return) @@ -574,7 +574,7 @@ ) ) - ;; CHECK: (func $call-start-used-globally + ;; CHECK: (func $call-start-used-globally (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$byn-split-inlineable-A$start-used-globally ;; CHECK-NEXT: (if @@ -611,7 +611,7 @@ ) ) - ;; CHECK: (func $call-inlineable + ;; CHECK: (func $call-inlineable (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$inlineable ;; CHECK-NEXT: (if @@ -634,7 +634,7 @@ (call $inlineable) ) - ;; CHECK: (func $if-not-first (param $x i32) + ;; CHECK: (func $if-not-first (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) @@ -659,7 +659,7 @@ ) ) - ;; CHECK: (func $call-if-not-first + ;; CHECK: (func $call-if-not-first (type $none_=>_none) ;; CHECK-NEXT: (call $if-not-first ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -672,7 +672,7 @@ (call $if-not-first (i32.const 1)) ) - ;; CHECK: (func $if-else (param $x i32) + ;; CHECK: (func $if-else (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (return) @@ -696,7 +696,7 @@ ) ) - ;; CHECK: (func $call-if-else + ;; CHECK: (func $call-if-else (type $none_=>_none) ;; CHECK-NEXT: (call $if-else ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -709,7 +709,7 @@ (call $if-else (i32.const 1)) ) - ;; CHECK: (func $if-non-return (param $x i32) + ;; CHECK: (func $if-non-return (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (unreachable) @@ -731,7 +731,7 @@ ) ) - ;; CHECK: (func $call-if-non-return + ;; CHECK: (func $call-if-non-return (type $none_=>_none) ;; CHECK-NEXT: (call $if-non-return ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -757,7 +757,7 @@ ) ) - ;; CHECK: (func $call-colliding-name + ;; CHECK: (func $call-colliding-name (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (block @@ -796,7 +796,7 @@ (call $colliding-name (i32.const 1)) ) - ;; CHECK: (func $byn-split-outlined-A$colliding-name + ;; CHECK: (func $byn-split-outlined-A$colliding-name (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $byn-split-outlined-A$colliding-name @@ -826,7 +826,7 @@ (local.get $x) ) - ;; CHECK: (func $call-error-if-null + ;; CHECK: (func $call-error-if-null (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (drop @@ -879,7 +879,7 @@ (drop (call $error-if-null (ref.null any))) ) - ;; CHECK: (func $too-many (param $x anyref) (result anyref) + ;; CHECK: (func $too-many (type $anyref_=>_anyref) (param $x anyref) (result anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $x) @@ -906,7 +906,7 @@ (local.get $x) ) - ;; CHECK: (func $call-too-many + ;; CHECK: (func $call-too-many (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $too-many ;; CHECK-NEXT: (ref.null none) @@ -923,7 +923,7 @@ (drop (call $too-many (ref.null any))) ) - ;; CHECK: (func $tail-not-simple (param $x anyref) (result anyref) + ;; CHECK: (func $tail-not-simple (type $anyref_=>_anyref) (param $x anyref) (result anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $x) @@ -948,7 +948,7 @@ (unreachable) ;; This prevents us from optimizing ) - ;; CHECK: (func $call-tail-not-simple + ;; CHECK: (func $call-tail-not-simple (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $tail-not-simple ;; CHECK-NEXT: (ref.null none) @@ -978,7 +978,7 @@ (local.get $x) ) - ;; CHECK: (func $call-reachable-if-body + ;; CHECK: (func $call-reachable-if-body (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (local $2 anyref) @@ -1052,7 +1052,7 @@ (drop (call $reachable-if-body (ref.null any))) ) - ;; CHECK: (func $reachable-if-body-return (param $x anyref) (result anyref) + ;; CHECK: (func $reachable-if-body-return (type $anyref_=>_anyref) (param $x anyref) (result anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $x) @@ -1084,7 +1084,7 @@ (local.get $x) ) - ;; CHECK: (func $call-reachable-if-body-return + ;; CHECK: (func $call-reachable-if-body-return (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $reachable-if-body-return ;; CHECK-NEXT: (ref.null none) @@ -1115,7 +1115,7 @@ ) ) - ;; CHECK: (func $call-unreachable-if-body-no-result + ;; CHECK: (func $call-unreachable-if-body-no-result (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (block @@ -1176,7 +1176,7 @@ (local.get $x) ) - ;; CHECK: (func $call-multi-if + ;; CHECK: (func $call-multi-if (type $none_=>_none) ;; CHECK-NEXT: (local $0 anyref) ;; CHECK-NEXT: (local $1 anyref) ;; CHECK-NEXT: (local $2 anyref) @@ -1249,7 +1249,7 @@ (drop (call $multi-if (ref.null data))) ) - ;; CHECK: (func $too-many-ifs (param $x anyref) (result anyref) + ;; CHECK: (func $too-many-ifs (type $anyref_=>_anyref) (param $x anyref) (result anyref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $x) @@ -1317,7 +1317,7 @@ (local.get $x) ) - ;; CHECK: (func $call-too-many-ifs + ;; CHECK: (func $call-too-many-ifs (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $too-many-ifs ;; CHECK-NEXT: (ref.null none) @@ -1335,14 +1335,14 @@ ) ) -;; CHECK: (func $byn-split-outlined-A$maybe-work-hard (param $x i32) +;; CHECK: (func $byn-split-outlined-A$maybe-work-hard (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-B$just-if (param $x i32) +;; CHECK: (func $byn-split-outlined-B$just-if (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br_if $l @@ -1351,59 +1351,59 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$many-params (param $x i64) (param $y i32) (param $z f64) +;; CHECK: (func $byn-split-outlined-A$many-params (type $i64_i32_f64_=>_none) (param $x i64) (param $y i32) (param $z f64) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$condition-eqz (param $x i32) +;; CHECK: (func $byn-split-outlined-A$condition-eqz (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$condition-global +;; CHECK: (func $byn-split-outlined-A$condition-global (type $none_=>_none) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$condition-ref.is (param $x anyref) +;; CHECK: (func $byn-split-outlined-A$condition-ref.is (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$start-used-globally +;; CHECK: (func $byn-split-outlined-A$start-used-globally (type $none_=>_none) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$colliding-name_0 (param $x i32) +;; CHECK: (func $byn-split-outlined-A$colliding-name_0 (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-B$error-if-null (param $x anyref) (result anyref) +;; CHECK: (func $byn-split-outlined-B$error-if-null (type $anyref_=>_anyref) (param $x anyref) (result anyref) ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-B$unreachable-if-body-no-result (param $x anyref) +;; CHECK: (func $byn-split-outlined-B$unreachable-if-body-no-result (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-B$multi-if_0 (param $x anyref) +;; CHECK: (func $byn-split-outlined-B$multi-if_0 (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (loop $x ;; CHECK-NEXT: (call $import) ;; CHECK-NEXT: (br_if $x @@ -1420,7 +1420,7 @@ (export "0" (func $0)) ;; CHECK: (export "1" (func $1)) (export "1" (func $1)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $global$0) ;; CHECK-NEXT: (return) @@ -1449,7 +1449,7 @@ (call $1) (call $1) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$byn-split-inlineable-A$0 ;; CHECK-NEXT: (if @@ -1509,110 +1509,110 @@ ;; Add a lot more functions, so the # of functions is high which would ;; otherwise limit the # of iterations that we run. - ;; CHECK: (func $2 + ;; CHECK: (func $2 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $2 (nop) ) - ;; CHECK: (func $3 + ;; CHECK: (func $3 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $3 (nop) ) - ;; CHECK: (func $4 + ;; CHECK: (func $4 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $4 (nop) ) - ;; CHECK: (func $5 + ;; CHECK: (func $5 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $5 (nop) ) - ;; CHECK: (func $6 + ;; CHECK: (func $6 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $6 (nop) ) - ;; CHECK: (func $7 + ;; CHECK: (func $7 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $7 (nop) ) - ;; CHECK: (func $8 + ;; CHECK: (func $8 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $8 (nop) ) - ;; CHECK: (func $9 + ;; CHECK: (func $9 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $9 (nop) ) - ;; CHECK: (func $10 + ;; CHECK: (func $10 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $10 (nop) ) - ;; CHECK: (func $11 + ;; CHECK: (func $11 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $11 (nop) ) - ;; CHECK: (func $12 + ;; CHECK: (func $12 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $12 (nop) ) - ;; CHECK: (func $13 + ;; CHECK: (func $13 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $13 (nop) ) - ;; CHECK: (func $14 + ;; CHECK: (func $14 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $14 (nop) ) - ;; CHECK: (func $15 + ;; CHECK: (func $15 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $15 (nop) ) - ;; CHECK: (func $16 + ;; CHECK: (func $16 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $16 (nop) ) - ;; CHECK: (func $17 + ;; CHECK: (func $17 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $17 (nop) ) - ;; CHECK: (func $18 + ;; CHECK: (func $18 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $18 (nop) ) ) -;; CHECK: (func $byn-split-outlined-A$0 +;; CHECK: (func $byn-split-outlined-A$0 (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$1 ;; CHECK-NEXT: (block @@ -1647,7 +1647,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$0_0 +;; CHECK: (func $byn-split-outlined-A$0_0 (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$1 ;; CHECK-NEXT: (block @@ -1682,7 +1682,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn-split-outlined-A$0_1 +;; CHECK: (func $byn-split-outlined-A$0_1 (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (block $__inlined_func$1 ;; CHECK-NEXT: (block diff --git a/test/lit/passes/inlining_vacuum_optimize-instructions.wast b/test/lit/passes/inlining_vacuum_optimize-instructions.wast index 839a5887e..11e51b203 100644 --- a/test/lit/passes/inlining_vacuum_optimize-instructions.wast +++ b/test/lit/passes/inlining_vacuum_optimize-instructions.wast @@ -12,13 +12,12 @@ ;; there. (module ;; CHECK: (type $B (struct )) - - ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) - + (type $B (struct_subtype data)) ;; CHECK: (type $A (struct (field (ref null $B)))) (type $A (struct_subtype (field (ref null $B)) data)) - (type $B (struct_subtype data)) - ;; CHECK: (func $target (param $0 (ref null $A)) + ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) + + ;; CHECK: (func $target (type $ref?|$A|_=>_none) (param $0 (ref null $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $B ;; CHECK-NEXT: (unreachable) @@ -40,4 +39,3 @@ (ref.null none) ) ) - diff --git a/test/lit/passes/instrument-locals-eh.wast b/test/lit/passes/instrument-locals-eh.wast index 44535b7c2..0c7934cf4 100644 --- a/test/lit/passes/instrument-locals-eh.wast +++ b/test/lit/passes/instrument-locals-eh.wast @@ -5,7 +5,7 @@ ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do diff --git a/test/lit/passes/instrument-memory-gc.wast b/test/lit/passes/instrument-memory-gc.wast index f41268480..e1f04a095 100644 --- a/test/lit/passes/instrument-memory-gc.wast +++ b/test/lit/passes/instrument-memory-gc.wast @@ -13,22 +13,22 @@ ;; CHECK: (type $i32_f64_=>_f64 (func (param i32 f64) (result f64))) ;; CHECK: (type $struct (struct (field (mut i32)) (field f32) (field $named f64))) - ;; NOMNL: (type $i32_i32_=>_i32 (func_subtype (param i32 i32) (result i32) func)) + ;; NOMNL: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - ;; NOMNL: (type $i32_i64_=>_i64 (func_subtype (param i32 i64) (result i64) func)) + ;; NOMNL: (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) - ;; NOMNL: (type $i32_f32_=>_f32 (func_subtype (param i32 f32) (result f32) func)) + ;; NOMNL: (type $i32_f32_=>_f32 (func (param i32 f32) (result f32))) - ;; NOMNL: (type $i32_f64_=>_f64 (func_subtype (param i32 f64) (result f64) func)) + ;; NOMNL: (type $i32_f64_=>_f64 (func (param i32 f64) (result f64))) - ;; NOMNL: (type $struct (struct_subtype (field (mut i32)) (field f32) (field $named f64) data)) + ;; NOMNL: (type $struct (struct (field (mut i32)) (field f32) (field $named f64))) (type $struct (struct (field (mut i32)) (field f32) (field $named f64) )) ;; CHECK: (type $array (array (mut f64))) - ;; NOMNL: (type $array (array_subtype (mut f64) data)) + ;; NOMNL: (type $array (array (mut f64))) (type $array (array (mut f64))) ;; CHECK: (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -93,7 +93,7 @@ ;; CHECK: (import "env" "array_set_index" (func $array_set_index (param i32 i32) (result i32))) - ;; CHECK: (func $structs (param $x (ref $struct)) + ;; CHECK: (func $structs (type $ref|$struct|_=>_none) (param $x (ref $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $struct_get_val_i32 ;; CHECK-NEXT: (i32.const 0) @@ -126,11 +126,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; NOMNL: (type $i32_i32_i32_i32_=>_i32 (func_subtype (param i32 i32 i32 i32) (result i32) func)) + ;; NOMNL: (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - ;; NOMNL: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; NOMNL: (type $ref|$struct|_=>_none (func (param (ref $struct)))) - ;; NOMNL: (type $ref|$array|_=>_none (func_subtype (param (ref $array)) func)) + ;; NOMNL: (type $ref|$array|_=>_none (func (param (ref $array)))) ;; NOMNL: (import "env" "load_ptr" (func $load_ptr (param i32 i32 i32 i32) (result i32))) @@ -234,7 +234,7 @@ (struct.set $struct 0 (local.get $x) (i32.const 42)) ) - ;; CHECK: (func $arrays (param $x (ref $array)) + ;; CHECK: (func $arrays (type $ref|$array|_=>_none) (param $x (ref $array)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $array_get_val_f64 ;; CHECK-NEXT: (i32.const 5) diff --git a/test/lit/passes/intrinsic-lowering.wast b/test/lit/passes/intrinsic-lowering.wast index 34e994f7f..cd072545b 100644 --- a/test/lit/passes/intrinsic-lowering.wast +++ b/test/lit/passes/intrinsic-lowering.wast @@ -17,7 +17,7 @@ ;; CHECK: (import "binaryen-intrinsics" "call.without.effects" (func $cwe-n (param funcref))) (import "binaryen-intrinsics" "call.without.effects" (func $cwe-n (param funcref))) - ;; CHECK: (func $test (param $none (ref null $none)) + ;; CHECK: (func $test (type $ref?|$none|_=>_none) (param $none (ref null $none)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $make-i32) ;; CHECK-NEXT: ) @@ -39,14 +39,14 @@ (call $cwe-n (local.get $none)) ) - ;; CHECK: (func $make-i32 (result i32) + ;; CHECK: (func $make-i32 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) (func $make-i32 (result i32) (i32.const 1) ) - ;; CHECK: (func $dif (param $0 f64) (param $1 i32) (result f32) + ;; CHECK: (func $dif (type $f64_i32_=>_f32) (param $0 f64) (param $1 i32) (result f32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $dif (param f64) (param i32) (result f32) diff --git a/test/lit/passes/jspi-args.wast b/test/lit/passes/jspi-args.wast index 237b31213..e915f02c0 100644 --- a/test/lit/passes/jspi-args.wast +++ b/test/lit/passes/jspi-args.wast @@ -18,7 +18,7 @@ ;; CHECK: (export "update_state_sync" (func $update_state_sync)) (export "update_state_sync" (func $update_state_sync)) ;; This function calls an async sleep so a wrapper should be created for it. - ;; CHECK: (func $update_state_async (param $param f64) (result i32) + ;; CHECK: (func $update_state_async (type $f64_=>_i32) (param $param f64) (result i32) ;; CHECK-NEXT: (call $sleep_async ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.const 1.1) @@ -29,7 +29,7 @@ (func $update_state_async (param $param f64) (result i32) (call $sleep_async (f64.sub (f64.const 1.1) (local.get $param))) ) - ;; CHECK: (func $update_state_sync (param $param f64) (result i32) + ;; CHECK: (func $update_state_sync (type $f64_=>_i32) (param $param f64) (result i32) ;; CHECK-NEXT: (call $sleep_sync ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.const 1.1) @@ -41,7 +41,7 @@ (call $sleep_sync (f64.sub (f64.const 1.1) (local.get $param))) ) ) -;; CHECK: (func $export$update_state_async (param $susp externref) (param $param f64) (result i32) +;; CHECK: (func $export$update_state_async (type $externref_f64_=>_i32) (param $susp externref) (param $param f64) (result i32) ;; CHECK-NEXT: (global.set $suspender ;; CHECK-NEXT: (local.get $susp) ;; CHECK-NEXT: ) @@ -50,7 +50,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $sleep_async (param $0 f64) (result i32) +;; CHECK: (func $sleep_async (type $f64_=>_i32) (param $0 f64) (result i32) ;; CHECK-NEXT: (local $1 externref) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local.set $1 diff --git a/test/lit/passes/jspi.wast b/test/lit/passes/jspi.wast index 5b8669be1..c6da24134 100644 --- a/test/lit/passes/jspi.wast +++ b/test/lit/passes/jspi.wast @@ -41,7 +41,7 @@ (export "import_and_export" (func $import_and_export)) - ;; CHECK: (func $update_state (param $param f64) (result i32) + ;; CHECK: (func $update_state (type $f64_=>_i32) (param $param f64) (result i32) ;; CHECK-NEXT: (call $compute_delta ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.const 1.1) @@ -53,7 +53,7 @@ (call $compute_delta (f64.sub (f64.const 1.1) (local.get $param))) ) - ;; CHECK: (func $update_state_void (param $0 f64) + ;; CHECK: (func $update_state_void (type $f64_=>_none) (param $0 f64) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $compute_delta ;; CHECK-NEXT: (f64.const 1.1) @@ -66,7 +66,7 @@ (drop (call $compute_delta (f64.const 1.1))) ) - ;; CHECK: (func $update_state_param_collision (param $susp f64) (result i32) + ;; CHECK: (func $update_state_param_collision (type $f64_=>_i32) (param $susp f64) (result i32) ;; CHECK-NEXT: (call $update_state_param_collision ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.const 1.1) @@ -78,7 +78,7 @@ (call $update_state_param_collision (f64.sub (f64.const 1.1) (local.get $susp))) ) ) -;; CHECK: (func $export$update_state_void (param $susp externref) (param $0 f64) (result i32) +;; CHECK: (func $export$update_state_void (type $externref_f64_=>_i32) (param $susp externref) (param $0 f64) (result i32) ;; CHECK-NEXT: (global.set $suspender ;; CHECK-NEXT: (local.get $susp) ;; CHECK-NEXT: ) @@ -88,7 +88,7 @@ ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) -;; CHECK: (func $export$update_state (param $susp externref) (param $param f64) (result i32) +;; CHECK: (func $export$update_state (type $externref_f64_=>_i32) (param $susp externref) (param $param f64) (result i32) ;; CHECK-NEXT: (global.set $suspender ;; CHECK-NEXT: (local.get $susp) ;; CHECK-NEXT: ) @@ -97,7 +97,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $export$update_state_param_collision (param $susp_0 externref) (param $susp f64) (result i32) +;; CHECK: (func $export$update_state_param_collision (type $externref_f64_=>_i32) (param $susp_0 externref) (param $susp f64) (result i32) ;; CHECK-NEXT: (global.set $suspender ;; CHECK-NEXT: (local.get $susp_0) ;; CHECK-NEXT: ) @@ -106,7 +106,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $export$import_and_export (param $susp externref) (param $0 i32) (result i32) +;; CHECK: (func $export$import_and_export (type $externref_i32_=>_i32) (param $susp externref) (param $0 i32) (result i32) ;; CHECK-NEXT: (global.set $suspender ;; CHECK-NEXT: (local.get $susp) ;; CHECK-NEXT: ) @@ -115,7 +115,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $compute_delta (param $0 f64) (result i32) +;; CHECK: (func $compute_delta (type $f64_=>_i32) (param $0 f64) (result i32) ;; CHECK-NEXT: (local $1 externref) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local.set $1 @@ -133,7 +133,7 @@ ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) -;; CHECK: (func $import_and_export (param $0 i32) (result i32) +;; CHECK: (func $import_and_export (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (local $1 externref) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local.set $1 @@ -151,7 +151,7 @@ ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) -;; CHECK: (func $import_void_return (param $0 i32) +;; CHECK: (func $import_void_return (type $i32_=>_none) (param $0 i32) ;; CHECK-NEXT: (local $1 externref) ;; CHECK-NEXT: (local.set $1 ;; CHECK-NEXT: (global.get $suspender) diff --git a/test/lit/passes/legalize-js-interface_all-features.wast b/test/lit/passes/legalize-js-interface_all-features.wast index 3ffe2acd7..beca1ab19 100644 --- a/test/lit/passes/legalize-js-interface_all-features.wast +++ b/test/lit/passes/legalize-js-interface_all-features.wast @@ -38,7 +38,7 @@ (export "imported_again" (func $imported)) ;; CHECK: (export "other" (func $legalstub$other)) (export "other" (func $other)) - ;; CHECK: (func $func (result i64) + ;; CHECK: (func $func (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $legalfunc$imported) ;; CHECK-NEXT: ) @@ -60,7 +60,7 @@ ) ;; ref.func must also be updated. - ;; CHECK: (func $ref-func-test + ;; CHECK: (func $ref-func-test (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $legalfunc$ref-func-arg) ;; CHECK-NEXT: ) @@ -77,7 +77,7 @@ ) ) ) -;; CHECK: (func $legalstub$func (result i32) +;; CHECK: (func $legalstub$func (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i64) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (call $func) @@ -95,7 +95,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $legalstub$imported (result i32) +;; CHECK: (func $legalstub$imported (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i64) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (call $legalfunc$imported) @@ -113,7 +113,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $legalstub$other (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) +;; CHECK: (func $legalstub$other (type $i32_i32_i32_i32_i32_=>_none) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) ;; CHECK-NEXT: (call $legalfunc$other ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i64.or @@ -141,7 +141,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $legalfunc$imported (result i64) +;; CHECK: (func $legalfunc$imported (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (i64.or ;; CHECK-NEXT: (i64.extend_i32_u ;; CHECK-NEXT: (call $legalimport$imported) @@ -155,7 +155,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $legalfunc$other (param $0 i32) (param $1 i64) (param $2 i64) +;; CHECK: (func $legalfunc$other (type $i32_i64_i64_=>_none) (param $0 i32) (param $1 i64) (param $2 i64) ;; CHECK-NEXT: (call $legalimport$other ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.wrap_i64 @@ -179,7 +179,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $legalfunc$ref-func-arg (result i64) +;; CHECK: (func $legalfunc$ref-func-arg (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (i64.or ;; CHECK-NEXT: (i64.extend_i32_u ;; CHECK-NEXT: (call $legalimport$ref-func-arg) diff --git a/test/lit/passes/local-cse_all-features.wast b/test/lit/passes/local-cse_all-features.wast index 22b6b1903..6fed86f29 100644 --- a/test/lit/passes/local-cse_all-features.wast +++ b/test/lit/passes/local-cse_all-features.wast @@ -11,7 +11,7 @@ ;; CHECK: (elem declare func $calls $ref.func) - ;; CHECK: (func $calls (param $x i32) (result i32) + ;; CHECK: (func $calls (type $f) (param $x i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call_ref $f ;; CHECK-NEXT: (i32.const 10) @@ -37,7 +37,7 @@ (i32.const 20) ) - ;; CHECK: (func $ref.func + ;; CHECK: (func $ref.func (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.func $ref.func) ;; CHECK-NEXT: ) @@ -73,7 +73,7 @@ ;; CHECK: (type $ref?|$B|_ref|$A|_=>_none (func (param (ref null $B) (ref $A)))) - ;; CHECK: (func $struct-gets-nullable (param $ref (ref null $A)) + ;; CHECK: (func $struct-gets-nullable (type $ref?|$A|_=>_none) (param $ref (ref null $A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.tee $1 @@ -110,7 +110,7 @@ ) ) - ;; CHECK: (func $struct-gets (param $ref (ref $A)) + ;; CHECK: (func $struct-gets (type $ref|$A|_=>_none) (param $ref (ref $A)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.tee $1 @@ -148,7 +148,7 @@ ) ) - ;; CHECK: (func $non-nullable-value (param $ref (ref $A)) + ;; CHECK: (func $non-nullable-value (type $ref|$A|_=>_none) (param $ref (ref $A)) ;; CHECK-NEXT: (local $1 (ref $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.tee $1 @@ -182,7 +182,7 @@ ) ) - ;; CHECK: (func $creations + ;; CHECK: (func $creations (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (struct.new $A ;; CHECK-NEXT: (i32.const 1) @@ -233,7 +233,7 @@ ) ) - ;; CHECK: (func $structs-and-arrays-do-not-alias (param $array (ref null $B)) (param $struct (ref $A)) + ;; CHECK: (func $structs-and-arrays-do-not-alias (type $ref?|$B|_ref|$A|_=>_none) (param $array (ref null $B)) (param $struct (ref $A)) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (array.set $B ;; CHECK-NEXT: (local.get $array) @@ -289,7 +289,7 @@ ;; we can avoid repeating them. ;; CHECK: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - ;; CHECK: (func $div16_internal (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $div16_internal (type $i32_i32_=>_i32) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $2 diff --git a/test/lit/passes/local-subtyping-nn.wast b/test/lit/passes/local-subtyping-nn.wast index a34300525..2eee625e7 100644 --- a/test/lit/passes/local-subtyping-nn.wast +++ b/test/lit/passes/local-subtyping-nn.wast @@ -11,7 +11,7 @@ ;; NOMNL: (import "out" "i32" (func $i32 (result i32))) (import "out" "i32" (func $i32 (result i32))) - ;; CHECK: (func $non-nullable + ;; CHECK: (func $non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref none)) ;; CHECK-NEXT: (local $y (ref $none_=>_i32)) ;; CHECK-NEXT: (local.set $x @@ -59,7 +59,7 @@ ) ) - ;; CHECK: (func $uses-default (param $i i32) + ;; CHECK: (func $uses-default (type $i32_=>_none) (param $i i32) ;; CHECK-NEXT: (local $x nullref) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $i) diff --git a/test/lit/passes/local-subtyping.wast b/test/lit/passes/local-subtyping.wast index e281d5cf2..0b2a24a45 100644 --- a/test/lit/passes/local-subtyping.wast +++ b/test/lit/passes/local-subtyping.wast @@ -22,7 +22,7 @@ ;; Refinalization can find a more specific type, where the declared type was ;; not the optimal LUB. - ;; CHECK: (func $refinalize (param $x i32) + ;; CHECK: (func $refinalize (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (if (result (ref i31)) ;; CHECK-NEXT: (local.get $x) @@ -68,7 +68,7 @@ ;; A simple case where a local has a single assignment that we can use as a ;; more specific type. A similar thing with a parameter, however, is not a ;; thing we can optimize. Also, ignore a local with zero assignments. - ;; CHECK: (func $simple-local-but-not-param (param $x funcref) + ;; CHECK: (func $simple-local-but-not-param (type $funcref_=>_none) (param $x funcref) ;; CHECK-NEXT: (local $y (ref $none_=>_i32)) ;; CHECK-NEXT: (local $unused funcref) ;; CHECK-NEXT: (local.set $x @@ -89,7 +89,7 @@ ) ) - ;; CHECK: (func $locals-with-multiple-assignments (param $data dataref) + ;; CHECK: (func $locals-with-multiple-assignments (type $dataref_=>_none) (param $data dataref) ;; CHECK-NEXT: (local $x eqref) ;; CHECK-NEXT: (local $y (ref i31)) ;; CHECK-NEXT: (local $z dataref) @@ -163,7 +163,7 @@ ;; In some cases multiple iterations are necessary, as one inferred new type ;; applies to a get which then allows another inference. - ;; CHECK: (func $multiple-iterations + ;; CHECK: (func $multiple-iterations (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref $none_=>_i32)) ;; CHECK-NEXT: (local $y (ref $none_=>_i32)) ;; CHECK-NEXT: (local $z (ref $none_=>_i32)) @@ -193,7 +193,7 @@ ) ;; Sometimes a refinalize is necessary in between the iterations. - ;; CHECK: (func $multiple-iterations-refinalize (param $i i32) + ;; CHECK: (func $multiple-iterations-refinalize (type $i32_=>_none) (param $i i32) ;; CHECK-NEXT: (local $x (ref $none_=>_i32)) ;; CHECK-NEXT: (local $y (ref $none_=>_i64)) ;; CHECK-NEXT: (local $z (ref func)) @@ -230,7 +230,7 @@ ) ) - ;; CHECK: (func $nondefaultable + ;; CHECK: (func $nondefaultable (type $none_=>_none) ;; CHECK-NEXT: (local $x (funcref funcref)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (tuple.make @@ -251,7 +251,7 @@ ) ) - ;; CHECK: (func $uses-default (param $i i32) + ;; CHECK: (func $uses-default (type $i32_=>_none) (param $i i32) ;; CHECK-NEXT: (local $x (ref null $i32_=>_none)) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $i) @@ -277,7 +277,7 @@ ) ) - ;; CHECK: (func $unreachables (result funcref) + ;; CHECK: (func $unreachables (type $none_=>_funcref) (result funcref) ;; CHECK-NEXT: (local $temp (ref $none_=>_funcref)) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (ref.func $unreachables) @@ -312,7 +312,7 @@ (local.get $temp) ) - ;; CHECK: (func $incompatible-sets (result i32) + ;; CHECK: (func $incompatible-sets (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $temp (ref $none_=>_i32)) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (ref.func $incompatible-sets) @@ -361,7 +361,7 @@ (unreachable) ) - ;; CHECK: (func $update-nulls + ;; CHECK: (func $update-nulls (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref null ${})) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.null none) @@ -404,7 +404,7 @@ (local.set $x (ref.null ${i32})) ) - ;; CHECK: (func $become-non-nullable + ;; CHECK: (func $become-non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref $none_=>_none)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $become-non-nullable) @@ -423,7 +423,7 @@ ) ) - ;; CHECK: (func $already-non-nullable + ;; CHECK: (func $already-non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref $none_=>_none)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $already-non-nullable) @@ -442,7 +442,7 @@ ) ) - ;; CHECK: (func $cannot-become-non-nullable + ;; CHECK: (func $cannot-become-non-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref null $none_=>_none)) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -470,7 +470,7 @@ ) ) - ;; CHECK: (func $cannot-become-non-nullable-block + ;; CHECK: (func $cannot-become-non-nullable-block (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref null $none_=>_none)) ;; CHECK-NEXT: (block $name ;; CHECK-NEXT: (br_if $name @@ -501,7 +501,7 @@ ) ) - ;; CHECK: (func $become-non-nullable-block-unnamed + ;; CHECK: (func $become-non-nullable-block-unnamed (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref $none_=>_none)) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $x diff --git a/test/lit/passes/memory-packing-gc.wast b/test/lit/passes/memory-packing-gc.wast index d16fe3a54..474c89c97 100644 --- a/test/lit/passes/memory-packing-gc.wast +++ b/test/lit/passes/memory-packing-gc.wast @@ -13,7 +13,7 @@ ;; CHECK: (data "hello") (data "hello") - ;; CHECK: (func $array-new-data (result (ref $array)) + ;; CHECK: (func $array-new-data (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 5) @@ -37,7 +37,7 @@ ;; CHECK: (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - ;; CHECK: (func $no-drop-ends (result (ref $array)) + ;; CHECK: (func $no-drop-ends (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 5) @@ -64,7 +64,7 @@ ;; CHECK: (data "optimize\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00me") (data "optimize\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00me") - ;; CHECK: (func $no-split (result (ref $array)) + ;; CHECK: (func $no-split (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 8) @@ -92,7 +92,7 @@ ;; CHECK: (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00optimize\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00me\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - ;; CHECK: (func $no-split-active (result (ref $array)) + ;; CHECK: (func $no-split-active (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 0 ;; CHECK-NEXT: (i32.const 16) ;; CHECK-NEXT: (i32.const 8) @@ -127,7 +127,7 @@ (memory $mem 1 1) - ;; CHECK: (func $renumber-segment (result (ref $array)) + ;; CHECK: (func $renumber-segment (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 2 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 7) @@ -157,7 +157,7 @@ (memory $mem 1 1) - ;; CHECK: (func $renumber-segment (result (ref $array)) + ;; CHECK: (func $renumber-segment (type $none_=>_ref|$array|) (result (ref $array)) ;; CHECK-NEXT: (array.new_data $array 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 7) diff --git a/test/lit/passes/memory-packing_all-features.wast b/test/lit/passes/memory-packing_all-features.wast index 62a12fd71..ba5a4b505 100644 --- a/test/lit/passes/memory-packing_all-features.wast +++ b/test/lit/passes/memory-packing_all-features.wast @@ -61,7 +61,7 @@ ;; CHECK: (data (i32.const 4066) "another\00but no") - ;; CHECK: (func $nonzero-size-init-of-active-will-trap + ;; CHECK: (func $nonzero-size-init-of-active-will-trap (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 42) @@ -85,7 +85,7 @@ (data.drop 0) ) - ;; CHECK: (func $nonzero-offset-init-of-active-will-trap + ;; CHECK: (func $nonzero-offset-init-of-active-will-trap (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 42) @@ -109,7 +109,7 @@ (data.drop 0) ) - ;; CHECK: (func $zero-offset-size-init-of-active-may-trap + ;; CHECK: (func $zero-offset-size-init-of-active-may-trap (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.gt_u ;; CHECK-NEXT: (i32.const 42) @@ -181,7 +181,7 @@ ;; CHECK: (data "no zeroes") - ;; CHECK: (func $zeroes-at-start + ;; CHECK: (func $zeroes-at-start (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state) @@ -217,7 +217,7 @@ ;; the not-split tests have too many memory.init and data.drop instructions for splitting to be worth it (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes at start") ;; 2 - ;; CHECK: (func $zeroes-at-start-not-split + ;; CHECK: (func $zeroes-at-start-not-split (type $none_=>_none) ;; CHECK-NEXT: (memory.init 1 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -266,7 +266,7 @@ (data "\00\00\00few zeroes at start") ;; 3 - ;; CHECK: (func $few-zeroes-at-start + ;; CHECK: (func $few-zeroes-at-start (type $none_=>_none) ;; CHECK-NEXT: (memory.init 2 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -285,7 +285,7 @@ (data "zeroes at end\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 4 - ;; CHECK: (func $zeroes-at-end + ;; CHECK: (func $zeroes-at-end (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (memory.init 3 ;; CHECK-NEXT: (i32.const 0) @@ -311,7 +311,7 @@ (data "zeroes at end\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 5 - ;; CHECK: (func $zeroes-at-end-not-split + ;; CHECK: (func $zeroes-at-end-not-split (type $none_=>_none) ;; CHECK-NEXT: (memory.init 4 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -360,7 +360,7 @@ (data "few zeroes at end\00\00\00") ;; 6 - ;; CHECK: (func $few-zeroes-at-end + ;; CHECK: (func $few-zeroes-at-end (type $none_=>_none) ;; CHECK-NEXT: (memory.init 5 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -379,7 +379,7 @@ (data "zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00in middle") ;; 7 - ;; CHECK: (func $zeroes-in-middle + ;; CHECK: (func $zeroes-in-middle (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (memory.init 6 ;; CHECK-NEXT: (i32.const 0) @@ -413,7 +413,7 @@ (data "zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00in middle") ;; 8 - ;; CHECK: (func $zeroes-in-middle-not-split + ;; CHECK: (func $zeroes-in-middle-not-split (type $none_=>_none) ;; CHECK-NEXT: (memory.init 8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -442,7 +442,7 @@ (data "few zeroes\00\00\00in middle") ;; 9 - ;; CHECK: (func $few-zeroes-in-middle + ;; CHECK: (func $few-zeroes-in-middle (type $none_=>_none) ;; CHECK-NEXT: (memory.init 9 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -461,7 +461,7 @@ (data "multiple\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00spans\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00of zeroes") ;; 10 - ;; CHECK: (func $multiple-spans-of-zeroes + ;; CHECK: (func $multiple-spans-of-zeroes (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (memory.init 10 ;; CHECK-NEXT: (i32.const 0) @@ -506,7 +506,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 11 - ;; CHECK: (func $even-more-zeroes + ;; CHECK: (func $even-more-zeroes (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_0) @@ -568,7 +568,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 12 - ;; CHECK: (func $only-zeroes + ;; CHECK: (func $only-zeroes (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_1) @@ -595,7 +595,7 @@ (data "no zeroes") ;; 13 - ;; CHECK: (func $no-zeroes + ;; CHECK: (func $no-zeroes (type $none_=>_none) ;; CHECK-NEXT: (memory.init 16 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -614,7 +614,7 @@ (data "") ;; 14 - ;; CHECK: (func $empty + ;; CHECK: (func $empty (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.gt_u ;; CHECK-NEXT: (i32.const 13) @@ -638,7 +638,7 @@ (data "only dropped") ;; 15 - ;; CHECK: (func $only-dropped + ;; CHECK: (func $only-dropped (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -649,7 +649,7 @@ (data "\00\00\00\00\00") ;; 16 - ;; CHECK: (func $only-dropped-zeroes + ;; CHECK: (func $only-dropped-zeroes (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -753,7 +753,7 @@ ;; CHECK: (data "zeroes") - ;; CHECK: (func $nonconst-dest + ;; CHECK: (func $nonconst-dest (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $0 @@ -837,7 +837,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 1 - ;; CHECK: (func $nonconst-offset + ;; CHECK: (func $nonconst-offset (type $none_=>_none) ;; CHECK-NEXT: (memory.init 3 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (global.get $param) @@ -856,7 +856,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 2 - ;; CHECK: (func $nonconst-size + ;; CHECK: (func $nonconst-size (type $none_=>_none) ;; CHECK-NEXT: (memory.init 4 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 0) @@ -875,7 +875,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 3 - ;; CHECK: (func $partial-skip-start + ;; CHECK: (func $partial-skip-start (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_0) @@ -937,7 +937,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 4 - ;; CHECK: (func $full-skip-start + ;; CHECK: (func $full-skip-start (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (memory.init 8 ;; CHECK-NEXT: (i32.const 0) @@ -987,7 +987,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 5 - ;; CHECK: (func $partial-skip-end + ;; CHECK: (func $partial-skip-end (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_1) @@ -1049,7 +1049,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 6 - ;; CHECK: (func $full-skip-end + ;; CHECK: (func $full-skip-end (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_2) @@ -1106,7 +1106,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 7 - ;; CHECK: (func $slice-zeroes + ;; CHECK: (func $slice-zeroes (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state_3) @@ -1138,7 +1138,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 8 - ;; CHECK: (func $slice-nonzeroes + ;; CHECK: (func $slice-nonzeroes (type $none_=>_none) ;; CHECK-NEXT: (memory.init 20 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 1) @@ -1161,7 +1161,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 9 - ;; CHECK: (func $zero-size + ;; CHECK: (func $zero-size (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1195,7 +1195,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 10 - ;; CHECK: (func $zero-size-undropped + ;; CHECK: (func $zero-size-undropped (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1220,7 +1220,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 11 - ;; CHECK: (func $out-of-bounds-offset + ;; CHECK: (func $out-of-bounds-offset (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) @@ -1246,7 +1246,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 12 - ;; CHECK: (func $zero-size-out-of-bounds-offset + ;; CHECK: (func $zero-size-out-of-bounds-offset (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) @@ -1272,7 +1272,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 13 - ;; CHECK: (func $out-of-bounds-size + ;; CHECK: (func $out-of-bounds-size (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) @@ -1298,7 +1298,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 14 - ;; CHECK: (func $zero-size-at-bounds-offset + ;; CHECK: (func $zero-size-at-bounds-offset (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1366,7 +1366,7 @@ ;; CHECK: (data "hi") - ;; CHECK: (func $zero-length-init-zeroes + ;; CHECK: (func $zero-length-init-zeroes (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1400,7 +1400,7 @@ (data "hi\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hi") ;; 1 - ;; CHECK: (func $zero-length-init-nonzeroes + ;; CHECK: (func $zero-length-init-nonzeroes (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1434,7 +1434,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hi") ;; 2 - ;; CHECK: (func $zero-length-init-zeroes-2 + ;; CHECK: (func $zero-length-init-zeroes-2 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1467,7 +1467,7 @@ (data "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hi") ;; 3 - ;; CHECK: (func $zero-length-init-nonzeroes-2 + ;; CHECK: (func $zero-length-init-nonzeroes-2 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.gt_u @@ -1636,7 +1636,7 @@ ;; CHECK: (data "a") - ;; CHECK: (func $init-lots + ;; CHECK: (func $init-lots (type $none_=>_none) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (memory.init 0 ;; CHECK-NEXT: (i32.const 0) @@ -2229,7 +2229,7 @@ ;; CHECK: (export "func_54" (func $0)) (export "func_54" (func $0)) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $__mem_segment_drop_state) ;; CHECK-NEXT: (unreachable) @@ -2282,7 +2282,7 @@ (data (i32.const 0) "") ;; CHECK: (data "foo") (data "foo") - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (memory.init 0 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 1) diff --git a/test/lit/passes/merge-blocks.wast b/test/lit/passes/merge-blocks.wast index 58ba6f171..fd30f4e07 100644 --- a/test/lit/passes/merge-blocks.wast +++ b/test/lit/passes/merge-blocks.wast @@ -15,7 +15,7 @@ (type $array (array (mut i32))) - ;; CHECK: (func $br_on_to_drop + ;; CHECK: (func $br_on_to_drop (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $label$1 (result i31ref) @@ -43,7 +43,7 @@ ) ) - ;; CHECK: (func $struct.set (param $struct (ref null $struct)) + ;; CHECK: (func $struct.set (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1234) @@ -68,7 +68,7 @@ ) ) - ;; CHECK: (func $struct.get (param $struct (ref null $struct)) + ;; CHECK: (func $struct.get (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1234) @@ -95,7 +95,7 @@ ) ) - ;; CHECK: (func $array.set (param $foo (ref $array)) + ;; CHECK: (func $array.set (type $ref|$array|_=>_none) (param $foo (ref $array)) ;; CHECK-NEXT: (local $bar (ref null $array)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -126,7 +126,7 @@ ) ) - ;; CHECK: (func $array.set-no-1 (param $foo (ref $array)) + ;; CHECK: (func $array.set-no-1 (type $ref|$array|_=>_none) (param $foo (ref $array)) ;; CHECK-NEXT: (local $bar i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -156,7 +156,7 @@ ) ) - ;; CHECK: (func $array.set-no-2 (param $foo (ref $array)) + ;; CHECK: (func $array.set-no-2 (type $ref|$array|_=>_none) (param $foo (ref $array)) ;; CHECK-NEXT: (local $bar i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -186,7 +186,7 @@ ) ) - ;; CHECK: (func $if-condition (result i32) + ;; CHECK: (func $if-condition (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -224,7 +224,7 @@ ) ) - ;; CHECK: (func $subsequent-children (param $x i32) (param $y i32) (param $z i32) (result i32) + ;; CHECK: (func $subsequent-children (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $helper ;; CHECK-NEXT: (i32.const 0) @@ -259,7 +259,7 @@ ) ) - ;; CHECK: (func $subsequent-children-1 (param $x i32) (param $y i32) (param $z i32) (result i32) + ;; CHECK: (func $subsequent-children-1 (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $helper ;; CHECK-NEXT: (i32.const 0) @@ -296,7 +296,7 @@ ) ) - ;; CHECK: (func $subsequent-children-2 (param $x i32) (param $y i32) (param $z i32) (result i32) + ;; CHECK: (func $subsequent-children-2 (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $helper ;; CHECK-NEXT: (i32.const 0) @@ -334,7 +334,7 @@ ) ) - ;; CHECK: (func $subsequent-children-3 (param $x i32) (param $y i32) (param $z i32) (result i32) + ;; CHECK: (func $subsequent-children-3 (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -369,7 +369,7 @@ ) ) - ;; CHECK: (func $subsequent-children-4 (param $x i32) (param $y i32) (param $z i32) (result i32) + ;; CHECK: (func $subsequent-children-4 (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -400,7 +400,7 @@ ) ) - ;; CHECK: (func $helper (param $x i32) (result i32) + ;; CHECK: (func $helper (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $helper (param $x i32) (result i32) diff --git a/test/lit/passes/merge-similar-functions.wast b/test/lit/passes/merge-similar-functions.wast index 885fb6278..7742f76c2 100644 --- a/test/lit/passes/merge-similar-functions.wast +++ b/test/lit/passes/merge-similar-functions.wast @@ -6,7 +6,7 @@ ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (func $big-const-42 (result i32) + ;; CHECK: (func $big-const-42 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$big-const-42 ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -18,7 +18,7 @@ ) ;; same as $big-const-42, but the set of $big-const-* derives {42, 42, 43} params - ;; CHECK: (func $big-const-42-1 (result i32) + ;; CHECK: (func $big-const-42-1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$big-const-42 ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -28,7 +28,7 @@ (nop) (nop) (nop) (nop) (nop) (nop) (i32.const 42) ) - ;; CHECK: (func $big-const-43 (result i32) + ;; CHECK: (func $big-const-43 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$big-const-42 ;; CHECK-NEXT: (i32.const 43) ;; CHECK-NEXT: ) @@ -39,13 +39,13 @@ (i32.const 43) ) - ;; CHECK: (func $small-const-44 (result i32) + ;; CHECK: (func $small-const-44 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 44) ;; CHECK-NEXT: ) (func $small-const-44 (result i32) (i32.const 44) ) - ;; CHECK: (func $small-const-45 (result i32) + ;; CHECK: (func $small-const-45 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 45) ;; CHECK-NEXT: ) (func $small-const-45 (result i32) @@ -54,7 +54,7 @@ ) ;; offset locals for extra params -;; CHECK: (func $byn$mgfn-shared$big-const-42 (param $0 i32) (result i32) +;; CHECK: (func $byn$mgfn-shared$big-const-42 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -74,7 +74,7 @@ ;; CHECK: (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - ;; CHECK: (func $take-param-and-local-0 (param $0 i32) (result i32) + ;; CHECK: (func $take-param-and-local-0 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$take-param-and-local-0 ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 42) @@ -86,7 +86,7 @@ (nop) (nop) (nop) (nop) (nop) (nop) (i32.add (i32.add (i32.const 42) (local.get $0)) (local.get $1)) ) - ;; CHECK: (func $take-param-and-local-1 (param $0 i32) (result i32) + ;; CHECK: (func $take-param-and-local-1 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$take-param-and-local-0 ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 43) @@ -102,7 +102,7 @@ ) ;; different callees -;; CHECK: (func $byn$mgfn-shared$take-param-and-local-0 (param $0 i32) (param $1 i32) (result i32) +;; CHECK: (func $byn$mgfn-shared$take-param-and-local-0 (type $i32_i32_=>_i32) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -135,33 +135,33 @@ ;; CHECK: (elem declare func $callee-0 $callee-1 $callee-2 $callee-take-arg-0 $callee-take-arg-1) - ;; CHECK: (func $callee-0 (result i32) + ;; CHECK: (func $callee-0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) (func $callee-0 (result i32) (i32.const 0)) - ;; CHECK: (func $callee-1 (result i32) + ;; CHECK: (func $callee-1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) (func $callee-1 (result i32) (i32.const 1)) - ;; CHECK: (func $callee-2 (result i32) + ;; CHECK: (func $callee-2 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) (func $callee-2 (result i32) (i32.const 2)) - ;; CHECK: (func $callee-take-arg-0 (param $0 i32) (result i32) + ;; CHECK: (func $callee-take-arg-0 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) (func $callee-take-arg-0 (param i32) (result i32) (i32.const 0)) - ;; CHECK: (func $callee-take-arg-1 (param $0 i32) (result i32) + ;; CHECK: (func $callee-take-arg-1 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) (func $callee-take-arg-1 (param i32) (result i32) (i32.const 1)) - ;; CHECK: (func $callee-take-arg-2 (param $0 i32) (result i32) + ;; CHECK: (func $callee-take-arg-2 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) (func $callee-take-arg-2 (param i32) (result i32) (i32.const 2)) - ;; CHECK: (func $yes-call-callee-0 (result i32) + ;; CHECK: (func $yes-call-callee-0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-call-callee-0 ;; CHECK-NEXT: (ref.func $callee-0) ;; CHECK-NEXT: ) @@ -172,7 +172,7 @@ (nop) (nop) (nop) (nop) (nop) (nop) (call $callee-0) ) - ;; CHECK: (func $yes-call-callee-1 (result i32) + ;; CHECK: (func $yes-call-callee-1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-call-callee-0 ;; CHECK-NEXT: (ref.func $callee-1) ;; CHECK-NEXT: ) @@ -183,7 +183,7 @@ (nop) (nop) (nop) (nop) (nop) (nop) (call $callee-1) ) - ;; CHECK: (func $yes-call-callee-2 (result i32) + ;; CHECK: (func $yes-call-callee-2 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-call-callee-0 ;; CHECK-NEXT: (ref.func $callee-2) ;; CHECK-NEXT: ) @@ -196,7 +196,7 @@ ) - ;; CHECK: (func $yes-call-callee-take-arg-0 (result i32) + ;; CHECK: (func $yes-call-callee-take-arg-0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-call-callee-take-arg-0 ;; CHECK-NEXT: (ref.func $callee-take-arg-0) ;; CHECK-NEXT: (i32.const 0) @@ -208,7 +208,7 @@ (nop) (nop) (nop) (nop) (nop) (nop) (call $callee-take-arg-0 (i32.const 0)) ) - ;; CHECK: (func $yes-call-callee-take-arg-1 (result i32) + ;; CHECK: (func $yes-call-callee-take-arg-1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-call-callee-take-arg-0 ;; CHECK-NEXT: (ref.func $callee-take-arg-1) ;; CHECK-NEXT: (i32.const 1) @@ -224,7 +224,7 @@ ;; NOTE: calls with different argument expressions are not mergeable - ;; CHECK: (func $no-call-callee-take-arg-0 (result i32) + ;; CHECK: (func $no-call-callee-take-arg-0 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -263,7 +263,7 @@ ) ) ) - ;; CHECK: (func $no-call-callee-take-arg-1 (result i32) + ;; CHECK: (func $no-call-callee-take-arg-1 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -309,7 +309,7 @@ ) -;; CHECK: (func $byn$mgfn-shared$yes-call-callee-0 (param $0 (ref $none_=>_i32)) (result i32) +;; CHECK: (func $byn$mgfn-shared$yes-call-callee-0 (type $ref|none_->_i32|_=>_i32) (param $0 (ref $none_=>_i32)) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -333,7 +333,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) -;; CHECK: (func $byn$mgfn-shared$yes-call-callee-take-arg-0 (param $0 (ref $i32_=>_i32)) (param $1 i32) (result i32) +;; CHECK: (func $byn$mgfn-shared$yes-call-callee-take-arg-0 (type $ref|i32_->_i32|_i32_=>_i32) (param $0 (ref $i32_=>_i32)) (param $1 i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -362,7 +362,7 @@ ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (func $use-42-twice (result i32) + ;; CHECK: (func $use-42-twice (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$use-42-twice ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) @@ -375,7 +375,7 @@ (i32.const 42) ) ) - ;; CHECK: (func $use-43-twice (result i32) + ;; CHECK: (func $use-43-twice (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$use-42-twice ;; CHECK-NEXT: (i32.const 43) ;; CHECK-NEXT: ) @@ -391,7 +391,7 @@ ) -;; CHECK: (func $byn$mgfn-shared$use-42-twice (param $0 i32) (result i32) +;; CHECK: (func $byn$mgfn-shared$use-42-twice (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -414,7 +414,7 @@ ;; CHECK: (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - ;; CHECK: (func $yes-offset-local-indices-1 (param $a i32) (param $b i32) + ;; CHECK: (func $yes-offset-local-indices-1 (type $i32_i32_=>_none) (param $a i32) (param $b i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-offset-local-indices-1 ;; CHECK-NEXT: (local.get $a) ;; CHECK-NEXT: (local.get $b) @@ -434,7 +434,7 @@ (drop (local.tee $b (local.get $b))) (drop (i32.const 1)) ) - ;; CHECK: (func $yes-offset-local-indices-2 (param $a i32) (param $b i32) + ;; CHECK: (func $yes-offset-local-indices-2 (type $i32_i32_=>_none) (param $a i32) (param $b i32) ;; CHECK-NEXT: (call $byn$mgfn-shared$yes-offset-local-indices-1 ;; CHECK-NEXT: (local.get $a) ;; CHECK-NEXT: (local.get $b) @@ -456,7 +456,7 @@ ) ) -;; CHECK: (func $byn$mgfn-shared$yes-offset-local-indices-1 (param $0 i32) (param $1 i32) (param $2 i32) +;; CHECK: (func $byn$mgfn-shared$yes-offset-local-indices-1 (type $i32_i32_i32_=>_none) (param $0 i32) (param $1 i32) (param $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (drop diff --git a/test/lit/passes/merge-similar-functions_all-features.wast b/test/lit/passes/merge-similar-functions_all-features.wast index bcd9c706b..91b7fa405 100644 --- a/test/lit/passes/merge-similar-functions_all-features.wast +++ b/test/lit/passes/merge-similar-functions_all-features.wast @@ -5,13 +5,13 @@ ;; CHECK: (type $[i8] (array i8)) (type $[i8] (array i8)) - ;; CHECK: (func $take-ref-null-data (param $0 dataref) + ;; CHECK: (func $take-ref-null-data (type $dataref_=>_none) (param $0 dataref) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $take-ref-null-data (param (ref null data)) (unreachable) ) - ;; CHECK: (func $take-ref-eq (param $0 (ref eq)) + ;; CHECK: (func $take-ref-eq (type $ref|eq|_=>_none) (param $0 (ref eq)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $take-ref-eq (param (ref eq)) @@ -24,7 +24,7 @@ ;; But in general, type B and C don't have a common subtype, so ;; we can't merge call instructions of func X and Y. - ;; CHECK: (func $no-call-subtyping-same-operand-0 + ;; CHECK: (func $no-call-subtyping-same-operand-0 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -55,7 +55,7 @@ (array.init_static $[i8]) ) ) - ;; CHECK: (func $no-call-subtyping-same-operand-1 + ;; CHECK: (func $no-call-subtyping-same-operand-1 (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/merge-similar-functions_types.wast b/test/lit/passes/merge-similar-functions_types.wast index 5cf5e473b..3fa71fa98 100644 --- a/test/lit/passes/merge-similar-functions_types.wast +++ b/test/lit/passes/merge-similar-functions_types.wast @@ -9,11 +9,11 @@ ;; However, their nominal types differ, so in nominal typing we cannot do so. (module ;; CHECK: (type $type$0 (func)) - ;; NOMNL: (type $type$0 (func_subtype func)) + ;; NOMNL: (type $type$0 (func)) (type $type$0 (func_subtype func)) - ;; NOMNL: (type $type$1 (func_subtype func)) + ;; NOMNL: (type $type$1 (func)) (type $type$1 (func_subtype func)) - ;; NOMNL: (type $type$2 (func_subtype func)) + ;; NOMNL: (type $type$2 (func)) (type $type$2 (func_subtype func)) (type $type$3 (func_subtype (param f32) (result f32) func)) (type $type$4 (func_subtype (param f64) (result f64) func)) @@ -21,7 +21,7 @@ ;; CHECK: (elem declare func $2 $3) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $type$0) ;; CHECK-NEXT: (call $byn$mgfn-shared$0 ;; CHECK-NEXT: (ref.func $2) ;; CHECK-NEXT: ) @@ -64,7 +64,7 @@ (nop) (nop) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $type$0) ;; CHECK-NEXT: (call $byn$mgfn-shared$0 ;; CHECK-NEXT: (ref.func $3) ;; CHECK-NEXT: ) @@ -107,7 +107,7 @@ (nop) (nop) ) - ;; CHECK: (func $2 + ;; CHECK: (func $2 (type $type$0) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 17) ;; CHECK-NEXT: ) @@ -122,7 +122,7 @@ (i32.const 17) ) ) - ;; CHECK: (func $3 + ;; CHECK: (func $3 (type $type$0) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 999) ;; CHECK-NEXT: ) @@ -142,7 +142,7 @@ -;; CHECK: (func $byn$mgfn-shared$0 (param $0 (ref $type$0)) +;; CHECK: (func $byn$mgfn-shared$0 (type $ref|$type$0|_=>_none) (param $0 (ref $type$0)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -168,9 +168,9 @@ ;; modes. ;; CHECK: (type $type$0 (func)) - ;; NOMNL: (type $type$1 (func_subtype func)) + ;; NOMNL: (type $type$1 (func)) - ;; NOMNL: (type $type$0 (func_subtype func)) + ;; NOMNL: (type $type$0 (func)) (type $type$0 (func_subtype func)) (type $type$1 (func_subtype func)) (type $type$3 (func_subtype (param f32) (result f32) func)) @@ -178,7 +178,7 @@ ;; CHECK: (type $ref|$type$0|_=>_none (func (param (ref $type$0)))) ;; CHECK: (global $global$0 (mut i32) (i32.const 10)) - ;; NOMNL: (type $ref|$type$1|_=>_none (func_subtype (param (ref $type$1)) func)) + ;; NOMNL: (type $ref|$type$1|_=>_none (func (param (ref $type$1)))) ;; NOMNL: (global $global$0 (mut i32) (i32.const 10)) (global $global$0 (mut i32) (i32.const 10)) @@ -187,7 +187,7 @@ (memory $0 (shared 16 17)) ;; CHECK: (elem declare func $2 $3) - ;; CHECK: (func $0 + ;; CHECK: (func $0 (type $type$0) ;; CHECK-NEXT: (call $byn$mgfn-shared$0 ;; CHECK-NEXT: (ref.func $2) ;; CHECK-NEXT: ) @@ -218,7 +218,7 @@ (nop) (nop) ) - ;; CHECK: (func $1 + ;; CHECK: (func $1 (type $type$0) ;; CHECK-NEXT: (call $byn$mgfn-shared$0 ;; CHECK-NEXT: (ref.func $3) ;; CHECK-NEXT: ) @@ -247,7 +247,7 @@ (nop) (nop) ) - ;; CHECK: (func $2 + ;; CHECK: (func $2 (type $type$0) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 17) ;; CHECK-NEXT: ) @@ -262,7 +262,7 @@ (i32.const 17) ) ) - ;; CHECK: (func $3 + ;; CHECK: (func $3 (type $type$0) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 999) ;; CHECK-NEXT: ) @@ -278,7 +278,7 @@ ) ) ) -;; CHECK: (func $byn$mgfn-shared$0 (param $0 (ref $type$0)) +;; CHECK: (func $byn$mgfn-shared$0 (type $ref|$type$0|_=>_none) (param $0 (ref $type$0)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/monomorphize.wast b/test/lit/passes/monomorphize.wast index 1cd219d08..1f0eb0f87 100644 --- a/test/lit/passes/monomorphize.wast +++ b/test/lit/passes/monomorphize.wast @@ -7,23 +7,23 @@ ;; RUN: foreach %s %t wasm-opt --nominal --monomorphize -all -S -o - | filecheck %s --check-prefix CAREFUL (module - ;; ALWAYS: (type $A (struct_subtype data)) - ;; CAREFUL: (type $A (struct_subtype data)) + ;; ALWAYS: (type $A (struct )) + ;; CAREFUL: (type $A (struct )) (type $A (struct_subtype data)) ;; ALWAYS: (type $B (struct_subtype $A)) ;; CAREFUL: (type $B (struct_subtype $A)) (type $B (struct_subtype $A)) - ;; ALWAYS: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; ALWAYS: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $none_=>_none (func)) - ;; ALWAYS: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; ALWAYS: (type $ref|$B|_=>_none (func (param (ref $B)))) ;; ALWAYS: (import "a" "b" (func $import (param (ref $A)))) - ;; CAREFUL: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CAREFUL: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; CAREFUL: (type $none_=>_none (func_subtype func)) + ;; CAREFUL: (type $none_=>_none (func)) ;; CAREFUL: (import "a" "b" (func $import (param (ref $A)))) (import "a" "b" (func $import (param (ref $A)))) @@ -124,10 +124,10 @@ ;; As above, but now the refinable function uses the local in a way that ;; requires a fixup. - ;; ALWAYS: (type $A (struct_subtype data)) - ;; CAREFUL: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $A (struct )) + ;; CAREFUL: (type $none_=>_none (func)) - ;; CAREFUL: (type $A (struct_subtype data)) + ;; CAREFUL: (type $A (struct )) (type $A (struct_subtype data)) ;; ALWAYS: (type $B (struct_subtype $A)) ;; CAREFUL: (type $B (struct_subtype $A)) @@ -135,18 +135,18 @@ - ;; ALWAYS: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $none_=>_none (func)) - ;; ALWAYS: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; ALWAYS: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; ALWAYS: (type $ref|$B|_=>_none (func (param (ref $B)))) ;; ALWAYS: (func $calls (type $none_=>_none) ;; ALWAYS-NEXT: (call $refinable_0 ;; ALWAYS-NEXT: (struct.new_default $B) ;; ALWAYS-NEXT: ) ;; ALWAYS-NEXT: ) - ;; CAREFUL: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CAREFUL: (type $ref|$A|_=>_none (func (param (ref $A)))) ;; CAREFUL: (func $calls (type $none_=>_none) ;; CAREFUL-NEXT: (call $refinable @@ -204,28 +204,28 @@ (module ;; Multiple refinings of the same function, and of different functions. - ;; ALWAYS: (type $A (struct_subtype data)) - ;; CAREFUL: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $A (struct )) + ;; CAREFUL: (type $none_=>_none (func)) - ;; CAREFUL: (type $A (struct_subtype data)) + ;; CAREFUL: (type $A (struct )) (type $A (struct_subtype data)) ;; ALWAYS: (type $B (struct_subtype $A)) ;; CAREFUL: (type $B (struct_subtype $A)) (type $B (struct_subtype $A)) - ;; ALWAYS: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $none_=>_none (func)) ;; ALWAYS: (type $C (struct_subtype $B)) - ;; CAREFUL: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CAREFUL: (type $ref|$A|_=>_none (func (param (ref $A)))) ;; CAREFUL: (type $C (struct_subtype $B)) (type $C (struct_subtype $B)) - ;; ALWAYS: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; ALWAYS: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; ALWAYS: (type $ref|$B|_=>_none (func (param (ref $B)))) - ;; ALWAYS: (type $ref|$C|_=>_none (func_subtype (param (ref $C)) func)) + ;; ALWAYS: (type $ref|$C|_=>_none (func (param (ref $C)))) ;; ALWAYS: (func $calls1 (type $none_=>_none) ;; ALWAYS-NEXT: (call $refinable1 @@ -327,28 +327,28 @@ ;; A case where even CAREFUL mode will monomorphize, as it helps the target ;; function get optimized better. - ;; ALWAYS: (type $A (struct_subtype data)) - ;; CAREFUL: (type $A (struct_subtype data)) + ;; ALWAYS: (type $A (struct )) + ;; CAREFUL: (type $A (struct )) (type $A (struct_subtype data)) ;; ALWAYS: (type $B (struct_subtype $A)) ;; CAREFUL: (type $B (struct_subtype $A)) (type $B (struct_subtype $A)) - ;; ALWAYS: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; ALWAYS: (type $ref|$B|_=>_none (func (param (ref $B)))) - ;; ALWAYS: (type $none_=>_none (func_subtype func)) + ;; ALWAYS: (type $none_=>_none (func)) - ;; ALWAYS: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $ref|$A|_=>_none (func (param (ref $A)))) ;; ALWAYS: (import "a" "b" (func $import (param (ref $B)))) ;; ALWAYS: (global $global (mut i32) (i32.const 1)) - ;; CAREFUL: (type $ref|$B|_=>_none (func_subtype (param (ref $B)) func)) + ;; CAREFUL: (type $ref|$B|_=>_none (func (param (ref $B)))) - ;; CAREFUL: (type $none_=>_none (func_subtype func)) + ;; CAREFUL: (type $none_=>_none (func)) - ;; CAREFUL: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; CAREFUL: (type $ref|$A|_=>_none (func (param (ref $A)))) ;; CAREFUL: (import "a" "b" (func $import (param (ref $B)))) @@ -558,12 +558,12 @@ (module ;; Test that we avoid recursive calls. - ;; ALWAYS: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; ALWAYS: (type $A (struct_subtype data)) - ;; CAREFUL: (type $ref|$A|_=>_none (func_subtype (param (ref $A)) func)) + ;; ALWAYS: (type $A (struct )) + ;; CAREFUL: (type $ref|$A|_=>_none (func (param (ref $A)))) - ;; CAREFUL: (type $A (struct_subtype data)) + ;; CAREFUL: (type $A (struct )) (type $A (struct_subtype data)) ;; ALWAYS: (type $B (struct_subtype $A)) ;; CAREFUL: (type $B (struct_subtype $A)) diff --git a/test/lit/passes/name-types.wast b/test/lit/passes/name-types.wast index de3bb01e9..8f11e9efd 100644 --- a/test/lit/passes/name-types.wast +++ b/test/lit/passes/name-types.wast @@ -7,19 +7,19 @@ (type $obnoxious-super-long-type-name_____________________________1 (struct)) ;; A reasonable name that will be kept. - ;; CHECK: (type $type$0 (func (param (ref $type$1) (ref $reasonable-name)))) - ;; CHECK: (type $type$1 (struct )) ;; CHECK: (type $reasonable-name (struct (field i32))) - ;; NOMNL: (type $type$0 (func_subtype (param (ref $type$1) (ref $reasonable-name)) func)) + ;; NOMNL: (type $type$0 (func (param (ref $type$1) (ref $reasonable-name)))) - ;; NOMNL: (type $type$1 (struct_subtype data)) + ;; NOMNL: (type $type$1 (struct )) - ;; NOMNL: (type $reasonable-name (struct_subtype (field i32) data)) + ;; NOMNL: (type $reasonable-name (struct (field i32))) (type $reasonable-name (struct (field i32))) - ;; CHECK: (func $foo (param $x (ref $type$1)) (param $y (ref $reasonable-name)) + ;; CHECK: (type $type$0 (func (param (ref $type$1) (ref $reasonable-name)))) + + ;; CHECK: (func $foo (type $type$0) (param $x (ref $type$1)) (param $y (ref $reasonable-name)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $foo (type $type$0) (param $x (ref $type$1)) (param $y (ref $reasonable-name)) diff --git a/test/lit/passes/once-reduction.wast b/test/lit/passes/once-reduction.wast index d5f6a95eb..9e99313e4 100644 --- a/test/lit/passes/once-reduction.wast +++ b/test/lit/passes/once-reduction.wast @@ -7,7 +7,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -25,7 +25,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -43,7 +43,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -65,7 +65,7 @@ (drop (i32.const 100)) ) - ;; CHECK: (func $caller-if-1 + ;; CHECK: (func $caller-if-1 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (block @@ -93,7 +93,7 @@ (call $once) ) - ;; CHECK: (func $caller-if-2 + ;; CHECK: (func $caller-if-2 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (call $once) @@ -120,7 +120,7 @@ (call $once) ) - ;; CHECK: (func $caller-loop-1 + ;; CHECK: (func $caller-loop-1 (type $none_=>_none) ;; CHECK-NEXT: (loop $loop ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -150,7 +150,7 @@ (call $once) ) - ;; CHECK: (func $caller-loop-2 + ;; CHECK: (func $caller-loop-2 (type $none_=>_none) ;; CHECK-NEXT: (loop $loop ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -176,7 +176,7 @@ (call $once) ) - ;; CHECK: (func $caller-single + ;; CHECK: (func $caller-single (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) (func $caller-single @@ -184,7 +184,7 @@ (call $once) ) - ;; CHECK: (func $caller-empty + ;; CHECK: (func $caller-empty (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $caller-empty @@ -205,7 +205,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 42)) (global $once (mut i32) (i32.const 42)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -224,7 +224,7 @@ (call $foo) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -245,7 +245,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 42)) (global $once (mut i32) (i32.const 42)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) @@ -266,7 +266,7 @@ (call $foo) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -286,7 +286,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 42)) (global $once (mut i32) (i32.const 42)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -307,7 +307,7 @@ (call $foo) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -327,7 +327,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 42)) (global $once (mut i32) (i32.const 42)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -348,7 +348,7 @@ (call $foo) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -367,7 +367,7 @@ ;; CHECK: (global $once2 (mut i32) (i32.const 0)) (global $once2 (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once1) ;; CHECK-NEXT: (return) @@ -384,7 +384,7 @@ (global.set $once2 (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -401,7 +401,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -418,7 +418,7 @@ (global.set $once (i32.const 0)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -435,7 +435,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -452,7 +452,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (global.set $once @@ -475,7 +475,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -492,7 +492,7 @@ (global.set $once (i32.const 42)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -503,7 +503,7 @@ (global.set $once (i32.const 1337)) ) - ;; CHECK: (func $caller-2 + ;; CHECK: (func $caller-2 (type $none_=>_none) ;; CHECK-NEXT: (global.set $once ;; CHECK-NEXT: (i32.const 1337) ;; CHECK-NEXT: ) @@ -526,7 +526,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -553,7 +553,7 @@ ;; CHECK: (global $once (mut f64) (f64.const 0)) (global $once (mut f64) (f64.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.trunc_f64_s ;; CHECK-NEXT: (global.get $once) @@ -575,7 +575,7 @@ (global.set $once (f64.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -598,7 +598,7 @@ ;; CHECK: (global $once (mut i32) (global.get $import)) (global $once (mut i32) (global.get $import)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -615,7 +615,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -632,7 +632,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -653,7 +653,7 @@ (global.set $once (i32.eqz (i32.eqz (i32.const 1)))) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -672,7 +672,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once (param $x i32) + ;; CHECK: (func $once (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -689,7 +689,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -712,7 +712,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once (result i32) + ;; CHECK: (func $once (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return @@ -733,7 +733,7 @@ (i32.const 3) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -754,7 +754,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (loop $loop ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) @@ -775,7 +775,7 @@ ) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -792,7 +792,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -805,7 +805,7 @@ ) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -822,7 +822,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -839,7 +839,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (drop @@ -860,7 +860,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -881,7 +881,7 @@ (drop (global.get $once)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -899,7 +899,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -916,7 +916,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (unreachable) @@ -939,7 +939,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -956,7 +956,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (call $once) @@ -1080,7 +1080,7 @@ (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -1097,7 +1097,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $try-catch + ;; CHECK: (func $try-catch (type $none_=>_none) ;; CHECK-NEXT: (try $label$5 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (if @@ -1144,7 +1144,7 @@ ;; CHECK: (global $many2 (mut i32) (i32.const 0)) (global $many2 (mut i32) (i32.const 0)) - ;; CHECK: (func $once1 + ;; CHECK: (func $once1 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once1) ;; CHECK-NEXT: (return) @@ -1177,7 +1177,7 @@ (call $many2) ) - ;; CHECK: (func $many1 + ;; CHECK: (func $many1 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $many1) ;; CHECK-NEXT: (return) @@ -1210,7 +1210,7 @@ (call $once2) ) - ;; CHECK: (func $once2 + ;; CHECK: (func $once2 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once2) ;; CHECK-NEXT: (return) @@ -1243,7 +1243,7 @@ (call $many1) ) - ;; CHECK: (func $many2 + ;; CHECK: (func $many2 (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $many2) ;; CHECK-NEXT: (return) @@ -1286,7 +1286,7 @@ ;; CHECK: (global $once (mut i32) (i32.const 0)) (global $once (mut i32) (i32.const 0)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -1303,7 +1303,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $A + ;; CHECK: (func $A (type $none_=>_none) ;; CHECK-NEXT: (call $B) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -1314,21 +1314,21 @@ (call $once) ) - ;; CHECK: (func $B + ;; CHECK: (func $B (type $none_=>_none) ;; CHECK-NEXT: (call $C) ;; CHECK-NEXT: ) (func $B (call $C) ) - ;; CHECK: (func $C + ;; CHECK: (func $C (type $none_=>_none) ;; CHECK-NEXT: (call $D) ;; CHECK-NEXT: ) (func $C (call $D) ) - ;; CHECK: (func $D + ;; CHECK: (func $D (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -1337,7 +1337,7 @@ (call $once) ) - ;; CHECK: (func $bad-A + ;; CHECK: (func $bad-A (type $none_=>_none) ;; CHECK-NEXT: (call $bad-B) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -1348,7 +1348,7 @@ (call $once) ) - ;; CHECK: (func $bad-B + ;; CHECK: (func $bad-B (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $bad-B @@ -1363,7 +1363,7 @@ ;; CHECK: (import "env" "glob" (global $once (mut i32))) (import "env" "glob" (global $once (mut i32))) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -1380,7 +1380,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) @@ -1401,7 +1401,7 @@ ;; CHECK: (export "once-global" (global $once)) (export "once-global" (global $once)) - ;; CHECK: (func $once + ;; CHECK: (func $once (type $none_=>_none) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (global.get $once) ;; CHECK-NEXT: (return) @@ -1418,7 +1418,7 @@ (global.set $once (i32.const 1)) ) - ;; CHECK: (func $caller + ;; CHECK: (func $caller (type $none_=>_none) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: (call $once) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/opt_flatten.wast b/test/lit/passes/opt_flatten.wast index 0e7ab9a41..cc8fd6028 100644 --- a/test/lit/passes/opt_flatten.wast +++ b/test/lit/passes/opt_flatten.wast @@ -7,7 +7,7 @@ (module ;; CHECK: (export "foo" (func $foo)) (export "foo" (func $foo)) - ;; CHECK: (func $foo (result funcref) + ;; CHECK: (func $foo (type $none_=>_funcref) (result funcref) ;; CHECK-NEXT: (local $0 funcref) ;; CHECK-NEXT: (local $1 (ref $none_=>_funcref)) ;; CHECK-NEXT: (local $2 (ref $none_=>_funcref)) diff --git a/test/lit/passes/optimize-added-constants-memory64.wast b/test/lit/passes/optimize-added-constants-memory64.wast index e44bc414b..3fbee69f4 100644 --- a/test/lit/passes/optimize-added-constants-memory64.wast +++ b/test/lit/passes/optimize-added-constants-memory64.wast @@ -7,7 +7,7 @@ (memory $0 i64 1 4294967296) - ;; CHECK: (func $load_i64 (result i64) + ;; CHECK: (func $load_i64 (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (i64.load ;; CHECK-NEXT: (i64.const 579) ;; CHECK-NEXT: ) @@ -18,7 +18,7 @@ ) ) - ;; CHECK: (func $load_overflow_i64 (result i64) + ;; CHECK: (func $load_overflow_i64 (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (i64.load offset=32 ;; CHECK-NEXT: (i64.const -16) ;; CHECK-NEXT: ) @@ -29,7 +29,7 @@ ) ) - ;; CHECK: (func $store + ;; CHECK: (func $store (type $none_=>_none) ;; CHECK-NEXT: (i64.store ;; CHECK-NEXT: (i64.const 579) ;; CHECK-NEXT: (i64.const 123) @@ -42,7 +42,7 @@ ) ) - ;; CHECK: (func $store_overflow + ;; CHECK: (func $store_overflow (type $none_=>_none) ;; CHECK-NEXT: (i64.store offset=32 ;; CHECK-NEXT: (i64.const -16) ;; CHECK-NEXT: (i64.const 123) diff --git a/test/lit/passes/optimize-casts.wast b/test/lit/passes/optimize-casts.wast index 449416e42..285060dac 100644 --- a/test/lit/passes/optimize-casts.wast +++ b/test/lit/passes/optimize-casts.wast @@ -3,7 +3,7 @@ ;; RUN: | filecheck %s (module - ;; CHECK: (type $A (struct_subtype data)) + ;; CHECK: (type $A (struct )) (type $A (struct_subtype data)) ;; CHECK: (type $B (struct_subtype $A)) diff --git a/test/lit/passes/optimize-for-js.wast b/test/lit/passes/optimize-for-js.wast index c771f77a7..e35cb6a05 100644 --- a/test/lit/passes/optimize-for-js.wast +++ b/test/lit/passes/optimize-for-js.wast @@ -3,7 +3,7 @@ ;; RUN: | filecheck %s (module - ;; CHECK: (func $is-power-of-2_32 (param $x i32) (result i32) + ;; CHECK: (func $is-power-of-2_32 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.eqz @@ -27,7 +27,7 @@ (i32.const 1) ) ) - ;; CHECK: (func $is-power-of-2_expr_32 (param $x i64) (result i32) + ;; CHECK: (func $is-power-of-2_expr_32 (type $i64_=>_i32) (param $x i64) (result i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (i32.eqz @@ -56,7 +56,7 @@ (i32.const 1) ) ) - ;; CHECK: (func $is-power-of-2_64 (param $x i64) (result i32) + ;; CHECK: (func $is-power-of-2_64 (type $i64_=>_i32) (param $x i64) (result i32) ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i64.eqz diff --git a/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast b/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast index e59c09307..de4d0da6f 100644 --- a/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast +++ b/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast @@ -10,16 +10,16 @@ ;; distinct nominally. The three tables will use different ones, and the ;; emitted call_indirects should use the corresponding ones. - ;; CHECK: (type $v1 (func_subtype func)) + ;; CHECK: (type $v1 (func)) (type $v1 (func)) - ;; CHECK: (type $v2 (func_subtype func)) + ;; CHECK: (type $v2 (func)) (type $v2 (func)) - ;; CHECK: (type $v3 (func_subtype func)) + ;; CHECK: (type $v3 (func)) (type $v3 (func)) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) ;; CHECK: (table $table-1 10 (ref null $v1)) (table $table-1 10 (ref null $v1)) diff --git a/test/lit/passes/optimize-instructions-call_ref.wast b/test/lit/passes/optimize-instructions-call_ref.wast index 66e0ee7d8..51d5cf020 100644 --- a/test/lit/passes/optimize-instructions-call_ref.wast +++ b/test/lit/passes/optimize-instructions-call_ref.wast @@ -29,21 +29,21 @@ ;; CHECK: (elem declare func $bar $fallthrough-no-params $fallthrough-non-nullable $return-nothing) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $i32_i32_=>_none) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $foo (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $bar (param $0 i32) (param $1 i32) + ;; CHECK: (func $bar (type $i32_i32_=>_none) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $bar (param i32) (param i32) (unreachable) ) - ;; CHECK: (func $call_ref-to-direct (param $x i32) (param $y i32) + ;; CHECK: (func $call_ref-to-direct (type $i32_i32_=>_none) (param $x i32) (param $y i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) @@ -58,7 +58,7 @@ ) ) - ;; CHECK: (func $fallthrough (param $x i32) + ;; CHECK: (func $fallthrough (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (call $foo ;; CHECK-NEXT: (local.tee $x @@ -104,7 +104,7 @@ ) ) - ;; CHECK: (func $fallthrough-no-params (result i32) + ;; CHECK: (func $fallthrough-no-params (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $none_=>_i32)) ;; CHECK-NEXT: (nop) @@ -124,7 +124,7 @@ ) ) - ;; CHECK: (func $fallthrough-non-nullable (param $x (ref data)) + ;; CHECK: (func $fallthrough-non-nullable (type $data_=>_none) (param $x (ref data)) ;; CHECK-NEXT: (local $1 dataref) ;; CHECK-NEXT: (call $fallthrough-non-nullable ;; CHECK-NEXT: (block (result (ref data)) @@ -157,7 +157,7 @@ ) ) - ;; CHECK: (func $fallthrough-bad-type (result i32) + ;; CHECK: (func $fallthrough-bad-type (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (call_ref $none_=>_i32 ;; CHECK-NEXT: (block (result (ref $none_=>_i32)) ;; CHECK-NEXT: (drop @@ -182,12 +182,12 @@ ) ;; Helper function for the above test. - ;; CHECK: (func $return-nothing + ;; CHECK: (func $return-nothing (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $return-nothing) - ;; CHECK: (func $fallthrough-unreachable + ;; CHECK: (func $fallthrough-unreachable (type $none_=>_none) ;; CHECK-NEXT: (call_ref $i32_i32_=>_none ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: (unreachable) @@ -209,7 +209,7 @@ ) ) - ;; CHECK: (func $ignore-unreachable + ;; CHECK: (func $ignore-unreachable (type $none_=>_none) ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (unreachable) @@ -224,7 +224,7 @@ ) ) - ;; CHECK: (func $call-table-get (param $x i32) + ;; CHECK: (func $call-table-get (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (call_indirect $table-1 (type $i32_i32_=>_none) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (i32.const 2) @@ -241,7 +241,7 @@ ) ) - ;; CHECK: (func $call_ref-to-select (param $x i32) (param $y i32) (param $z i32) (param $f (ref $i32_i32_=>_none)) + ;; CHECK: (func $call_ref-to-select (type $i32_i32_i32_ref|$i32_i32_=>_none|_=>_none) (param $x i32) (param $y i32) (param $z i32) (param $f (ref $i32_i32_=>_none)) ;; CHECK-NEXT: (local $4 i32) ;; CHECK-NEXT: (local $5 i32) ;; CHECK-NEXT: (block @@ -297,7 +297,7 @@ ) ) - ;; CHECK: (func $return_call_ref-to-select (param $x i32) (param $y i32) + ;; CHECK: (func $return_call_ref-to-select (type $i32_i32_=>_none) (param $x i32) (param $y i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local.set $2 @@ -332,7 +332,7 @@ ) ) - ;; CHECK: (func $get-i32 (result i32) + ;; CHECK: (func $get-i32 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) (func $get-i32 (result i32) diff --git a/test/lit/passes/optimize-instructions-eh.wast b/test/lit/passes/optimize-instructions-eh.wast index 7fd871c15..afed1accc 100644 --- a/test/lit/passes/optimize-instructions-eh.wast +++ b/test/lit/passes/optimize-instructions-eh.wast @@ -5,7 +5,7 @@ (module ;; CHECK: (tag $e (param i32)) - ;; CHECK: (func $dummy + ;; CHECK: (func $dummy (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $dummy) @@ -23,7 +23,7 @@ ;; is guaranteed to contain a value equal to or less than 7. - ;; CHECK: (func $getFallthrough-try-no-throw + ;; CHECK: (func $getFallthrough-try-no-throw (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (try (result i32) @@ -57,7 +57,7 @@ (drop (i32.and (local.get $x) (i32.const 7))) ) - ;; CHECK: (func $getFallthrough-try-may-throw + ;; CHECK: (func $getFallthrough-try-may-throw (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (try (result i32) @@ -95,7 +95,7 @@ (drop (i32.and (local.get $x) (i32.const 7))) ) - ;; CHECK: (func $getFallthrough-nested-try-0 + ;; CHECK: (func $getFallthrough-nested-try-0 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (try (result i32) @@ -154,7 +154,7 @@ (drop (i32.and (local.get $x) (i32.const 7))) ) - ;; CHECK: (func $getFallthrough-nested-try-1 + ;; CHECK: (func $getFallthrough-nested-try-1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (try (result i32) @@ -202,7 +202,7 @@ (drop (i32.and (local.get $x) (i32.const 7))) ) - ;; CHECK: (func $getFallthrough-nested-try-2 + ;; CHECK: (func $getFallthrough-nested-try-2 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (try (result i32) diff --git a/test/lit/passes/optimize-instructions-gc-extern.wast b/test/lit/passes/optimize-instructions-gc-extern.wast index 18c91f1bb..007be6efa 100644 --- a/test/lit/passes/optimize-instructions-gc-extern.wast +++ b/test/lit/passes/optimize-instructions-gc-extern.wast @@ -3,7 +3,7 @@ ;; RUN: | filecheck %s (module - ;; CHECK: (func $extern.externalize (param $x anyref) (param $y externref) + ;; CHECK: (func $extern.externalize (type $anyref_externref_=>_none) (param $x anyref) (param $y externref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (extern.externalize ;; CHECK-NEXT: (local.get $x) diff --git a/test/lit/passes/optimize-instructions-gc-heap.wast b/test/lit/passes/optimize-instructions-gc-heap.wast index e448e57fd..6149719dd 100644 --- a/test/lit/passes/optimize-instructions-gc-heap.wast +++ b/test/lit/passes/optimize-instructions-gc-heap.wast @@ -15,7 +15,7 @@ ;; CHECK: (type $struct3 (struct (field (mut i32)) (field (mut i32)) (field (mut i32)))) (type $struct3 (struct (field (mut i32)) (field (mut i32)) (field (mut i32)))) - ;; CHECK: (func $tee + ;; CHECK: (func $tee (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -36,7 +36,7 @@ ) ) - ;; CHECK: (func $side-effects-in-old-value + ;; CHECK: (func $side-effects-in-old-value (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -64,7 +64,7 @@ ) ) - ;; CHECK: (func $side-effects-in-new-value + ;; CHECK: (func $side-effects-in-new-value (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -87,7 +87,7 @@ ) ) - ;; CHECK: (func $many-fields + ;; CHECK: (func $many-fields (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct2)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct2 @@ -126,7 +126,7 @@ ) ) - ;; CHECK: (func $side-effect-conflict + ;; CHECK: (func $side-effect-conflict (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct2)) ;; CHECK-NEXT: (struct.set $struct2 0 ;; CHECK-NEXT: (local.tee $ref @@ -157,7 +157,7 @@ ) ) - ;; CHECK: (func $side-effect-ok + ;; CHECK: (func $side-effect-ok (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct2)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct2 @@ -189,7 +189,7 @@ ) ) - ;; CHECK: (func $optimize-subsequent + ;; CHECK: (func $optimize-subsequent (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -212,7 +212,7 @@ ) ) - ;; CHECK: (func $optimize-subsequent-bad-local + ;; CHECK: (func $optimize-subsequent-bad-local (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local $other (ref null $struct)) ;; CHECK-NEXT: (local.set $ref @@ -241,7 +241,7 @@ ) ) - ;; CHECK: (func $optimize-chain + ;; CHECK: (func $optimize-chain (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -269,7 +269,7 @@ ) ) - ;; CHECK: (func $pattern-breaker + ;; CHECK: (func $pattern-breaker (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -297,7 +297,7 @@ ) ) - ;; CHECK: (func $ref-local-write + ;; CHECK: (func $ref-local-write (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -333,7 +333,7 @@ ) ) - ;; CHECK: (func $ref-local-write-tee + ;; CHECK: (func $ref-local-write-tee (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (struct.set $struct 0 ;; CHECK-NEXT: (local.tee $ref @@ -367,7 +367,7 @@ ) ) - ;; CHECK: (func $other-local-write + ;; CHECK: (func $other-local-write (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local $other (ref null $struct)) ;; CHECK-NEXT: (local.set $ref @@ -402,7 +402,7 @@ ) ) - ;; CHECK: (func $ref-local-read + ;; CHECK: (func $ref-local-read (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct @@ -438,7 +438,7 @@ ) ) - ;; CHECK: (func $ref-local-read-tee + ;; CHECK: (func $ref-local-read-tee (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (struct.set $struct 0 ;; CHECK-NEXT: (local.tee $ref @@ -472,7 +472,7 @@ ) ) - ;; CHECK: (func $ref-other-read + ;; CHECK: (func $ref-other-read (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local $other (ref null $struct)) ;; CHECK-NEXT: (local.set $ref @@ -507,7 +507,7 @@ ) ) - ;; CHECK: (func $tee-and-subsequent + ;; CHECK: (func $tee-and-subsequent (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct3)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct3 @@ -543,7 +543,7 @@ ) ) - ;; CHECK: (func $side-effect-subsequent-ok + ;; CHECK: (func $side-effect-subsequent-ok (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct2)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new $struct2 @@ -573,7 +573,7 @@ ) ) - ;; CHECK: (func $default + ;; CHECK: (func $default (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (struct.set $struct 0 ;; CHECK-NEXT: (local.tee $ref @@ -594,7 +594,7 @@ ) ) - ;; CHECK: (func $many-news + ;; CHECK: (func $many-news (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct3)) ;; CHECK-NEXT: (local $ref2 (ref null $struct3)) ;; CHECK-NEXT: (local.set $ref @@ -710,7 +710,7 @@ ) ) - ;; CHECK: (func $unreachable + ;; CHECK: (func $unreachable (type $none_=>_none) ;; CHECK-NEXT: (local $ref (ref null $struct)) ;; CHECK-NEXT: (local.tee $ref ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) @@ -760,7 +760,7 @@ ) ) - ;; CHECK: (func $helper-i32 (param $x i32) (result i32) + ;; CHECK: (func $helper-i32 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (i32.const 42) ;; CHECK-NEXT: ) (func $helper-i32 (param $x i32) (result i32) diff --git a/test/lit/passes/optimize-instructions-gc-iit.wast b/test/lit/passes/optimize-instructions-gc-iit.wast index 24c5c6809..ce93b5d04 100644 --- a/test/lit/passes/optimize-instructions-gc-iit.wast +++ b/test/lit/passes/optimize-instructions-gc-iit.wast @@ -9,19 +9,19 @@ (module ;; CHECK: (type $parent (struct (field i32))) - ;; NOMNL: (type $parent (struct_subtype (field i32) data)) - ;; NOMNL-TNH: (type $parent (struct_subtype (field i32) data)) + ;; NOMNL: (type $parent (struct (field i32))) + ;; NOMNL-TNH: (type $parent (struct (field i32))) (type $parent (struct (field i32))) - ;; CHECK: (type $child (struct (field i32) (field f64))) + ;; CHECK: (type $child (struct_subtype (field i32) (field f64) $parent)) ;; NOMNL: (type $child (struct_subtype (field i32) (field f64) $parent)) ;; NOMNL-TNH: (type $child (struct_subtype (field i32) (field f64) $parent)) (type $child (struct_subtype (field i32) (field f64) $parent)) ;; CHECK: (type $other (struct (field i64) (field f32))) - ;; NOMNL: (type $other (struct_subtype (field i64) (field f32) data)) - ;; NOMNL-TNH: (type $other (struct_subtype (field i64) (field f32) data)) + ;; NOMNL: (type $other (struct (field i64) (field f32))) + ;; NOMNL-TNH: (type $other (struct (field i64) (field f32))) (type $other (struct (field i64) (field f32))) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $foo (type $none_=>_none) @@ -33,7 +33,7 @@ (func $foo) - ;; CHECK: (func $ref-cast-iit (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) + ;; CHECK: (func $ref-cast-iit (type $ref|$parent|_ref|$child|_ref|$other|_=>_none) (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $parent) ;; CHECK-NEXT: ) @@ -130,7 +130,7 @@ ) ) - ;; CHECK: (func $ref-cast-iit-bad (param $parent (ref $parent)) + ;; CHECK: (func $ref-cast-iit-bad (type $ref|$parent|_=>_none) (param $parent (ref $parent)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $parent)) ;; CHECK-NEXT: (call $foo) @@ -190,7 +190,7 @@ ) ) - ;; CHECK: (func $ref-eq-ref-cast (param $x eqref) + ;; CHECK: (func $ref-eq-ref-cast (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -217,7 +217,7 @@ ) ) - ;; CHECK: (func $set-of-as-non-null (param $x anyref) + ;; CHECK: (func $set-of-as-non-null (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) @@ -243,24 +243,28 @@ ) (module - ;; CHECK: (type $B (struct (field (ref null $A)))) - - ;; CHECK: (type $A (struct )) - ;; NOMNL: (type $A (struct_subtype data)) - ;; NOMNL-TNH: (type $A (struct_subtype data)) - (type $A (struct_subtype data)) - ;; NOMNL: (type $B (struct_subtype (field (ref null $A)) $A)) - ;; NOMNL-TNH: (type $B (struct_subtype (field (ref null $A)) $A)) - (type $B (struct_subtype (field (ref null $A)) $A)) - ;; NOMNL: (type $C (struct_subtype (field (ref null $D)) $B)) - ;; NOMNL-TNH: (type $C (struct_subtype (field (ref null $D)) $B)) - (type $C (struct_subtype (field (ref null $D)) $B)) - ;; NOMNL: (type $D (struct_subtype $A)) - ;; NOMNL-TNH: (type $D (struct_subtype $A)) - (type $D (struct_subtype $A)) + (rec + ;; CHECK: (rec + ;; CHECK-NEXT: (type $A (struct )) + ;; NOMNL: (type $A (struct )) + ;; NOMNL-TNH: (type $A (struct )) + (type $A (struct_subtype data)) + ;; CHECK: (type $B (struct_subtype (field (ref null $A)) $A)) + ;; NOMNL: (type $B (struct_subtype (field (ref null $A)) $A)) + ;; NOMNL-TNH: (type $B (struct_subtype (field (ref null $A)) $A)) + (type $B (struct_subtype (field (ref null $A)) $A)) + ;; CHECK: (type $C (struct_subtype (field (ref null $D)) $B)) + ;; NOMNL: (type $C (struct_subtype (field (ref null $D)) $B)) + ;; NOMNL-TNH: (type $C (struct_subtype (field (ref null $D)) $B)) + (type $C (struct_subtype (field (ref null $D)) $B)) + ;; CHECK: (type $D (struct_subtype $A)) + ;; NOMNL: (type $D (struct_subtype $A)) + ;; NOMNL-TNH: (type $D (struct_subtype $A)) + (type $D (struct_subtype $A)) + ) - ;; CHECK: (func $test (param $C (ref $B)) (result anyref) - ;; CHECK-NEXT: (struct.get $B 0 + ;; CHECK: (func $test (type $ref|$C|_=>_anyref) (param $C (ref $C)) (result anyref) + ;; CHECK-NEXT: (struct.get $C 0 ;; CHECK-NEXT: (local.get $C) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/optimize-instructions-gc-tnh-nn.wast b/test/lit/passes/optimize-instructions-gc-tnh-nn.wast index e0a580ae1..aa696f819 100644 --- a/test/lit/passes/optimize-instructions-gc-tnh-nn.wast +++ b/test/lit/passes/optimize-instructions-gc-tnh-nn.wast @@ -3,7 +3,7 @@ ;; RUN: | filecheck %s (module - ;; CHECK: (func $set-of-as-non-null + ;; CHECK: (func $set-of-as-non-null (type $none_=>_none) ;; CHECK-NEXT: (local $x anyref) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.as_non_null diff --git a/test/lit/passes/optimize-instructions-gc-tnh.wast b/test/lit/passes/optimize-instructions-gc-tnh.wast index d8fe7a677..1e38ec8c7 100644 --- a/test/lit/passes/optimize-instructions-gc-tnh.wast +++ b/test/lit/passes/optimize-instructions-gc-tnh.wast @@ -3,8 +3,8 @@ ;; RUN: wasm-opt %s --optimize-instructions -all --nominal -S -o - | filecheck %s --check-prefix NO_TNH (module - ;; TNH: (type $struct (struct_subtype data)) - ;; NO_TNH: (type $struct (struct_subtype data)) + ;; TNH: (type $struct (struct )) + ;; NO_TNH: (type $struct (struct )) (type $struct (struct_subtype data)) ;; TNH: (func $ref.eq (type $eqref_eqref_=>_i32) (param $a eqref) (param $b eqref) (result i32) diff --git a/test/lit/passes/optimize-instructions-gc.wast b/test/lit/passes/optimize-instructions-gc.wast index fb50d103f..79c03227c 100644 --- a/test/lit/passes/optimize-instructions-gc.wast +++ b/test/lit/passes/optimize-instructions-gc.wast @@ -6,7 +6,7 @@ (module ;; CHECK: (type $struct (struct (field $i8 (mut i8)) (field $i16 (mut i16)) (field $i32 (mut i32)) (field $i64 (mut i64)))) - ;; NOMNL: (type $struct (struct_subtype (field $i8 (mut i8)) (field $i16 (mut i16)) (field $i32 (mut i32)) (field $i64 (mut i64)) data)) + ;; NOMNL: (type $struct (struct (field $i8 (mut i8)) (field $i16 (mut i16)) (field $i32 (mut i32)) (field $i64 (mut i64)))) (type $struct (struct (field $i8 (mut i8)) (field $i16 (mut i16)) @@ -14,35 +14,36 @@ (field $i64 (mut i64)) )) - ;; CHECK: (type $B (struct (field i32) (field i32) (field f32))) - - ;; CHECK: (type $array (array (mut i8))) - ;; CHECK: (type $A (struct (field i32))) - ;; NOMNL: (type $A (struct_subtype (field i32) data)) + ;; NOMNL: (type $A (struct (field i32))) (type $A (struct (field i32))) + ;; CHECK: (type $B (struct_subtype (field i32) (field i32) (field f32) $A)) + + ;; CHECK: (type $array (array (mut i8))) ;; NOMNL: (type $B (struct_subtype (field i32) (field i32) (field f32) $A)) - ;; NOMNL: (type $array (array_subtype (mut i8) data)) + ;; NOMNL: (type $array (array (mut i8))) (type $array (array (mut i8))) (type $B (struct_subtype (field i32) (field i32) (field f32) $A)) - ;; CHECK: (type $B-child (struct (field i32) (field i32) (field f32) (field i64))) + ;; CHECK: (type $B-child (struct_subtype (field i32) (field i32) (field f32) (field i64) $B)) ;; NOMNL: (type $B-child (struct_subtype (field i32) (field i32) (field f32) (field i64) $B)) (type $B-child (struct_subtype (field i32) (field i32) (field f32) (field i64) $B)) - ;; NOMNL: (type $void (func_subtype func)) + ;; CHECK: (type $void (func)) + + ;; CHECK: (type $C (struct_subtype (field i32) (field i32) (field f64) $A)) + + ;; CHECK: (type $empty (struct )) + ;; NOMNL: (type $void (func)) ;; NOMNL: (type $C (struct_subtype (field i32) (field i32) (field f64) $A)) - ;; NOMNL: (type $empty (struct_subtype data)) + ;; NOMNL: (type $empty (struct )) (type $empty (struct)) - ;; CHECK: (type $void (func)) - - ;; CHECK: (type $C (struct (field i32) (field i32) (field f64))) (type $C (struct_subtype (field i32) (field i32) (field f64) $A)) (type $void (func)) @@ -53,7 +54,7 @@ ;; These functions test if an `if` with subtyped arms is correctly folded ;; 1. if its `ifTrue` and `ifFalse` arms are identical (can fold) - ;; CHECK: (func $if-arms-subtype-fold (result anyref) + ;; CHECK: (func $if-arms-subtype-fold (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; NOMNL: (func $if-arms-subtype-fold (type $none_=>_anyref) (result anyref) @@ -67,7 +68,7 @@ ) ) ;; 2. if its `ifTrue` and `ifFalse` arms are not identical (cannot fold) - ;; CHECK: (func $if-arms-subtype-nofold (param $i31ref i31ref) (result anyref) + ;; CHECK: (func $if-arms-subtype-nofold (type $i31ref_=>_anyref) (param $i31ref i31ref) (result anyref) ;; CHECK-NEXT: (if (result anyref) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (ref.null none) @@ -90,7 +91,7 @@ ) ;; Stored values automatically truncate unneeded bytes. - ;; CHECK: (func $store-trunc (param $x (ref null $struct)) + ;; CHECK: (func $store-trunc (type $ref?|$struct|_=>_none) (param $x (ref null $struct)) ;; CHECK-NEXT: (struct.set $struct $i8 ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (i32.const 35) @@ -137,7 +138,7 @@ ) ;; Similar, but for arrays. - ;; CHECK: (func $store-trunc2 (param $x (ref null $array)) + ;; CHECK: (func $store-trunc2 (type $ref?|$array|_=>_none) (param $x (ref null $array)) ;; CHECK-NEXT: (array.set $array ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (i32.const 0) @@ -161,7 +162,7 @@ ;; ref.is_null is not needed on a non-nullable value, and if something is ;; a func we don't need that either etc. if we know the result - ;; CHECK: (func $unneeded_is (param $struct (ref $struct)) (param $func (ref func)) (param $data (ref data)) (param $i31 (ref i31)) + ;; CHECK: (func $unneeded_is (type $ref|$struct|_ref|func|_ref|data|_ref|i31|_=>_none) (param $struct (ref $struct)) (param $func (ref func)) (param $data (ref data)) (param $i31 (ref i31)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -250,7 +251,7 @@ ;; similar to $unneeded_is, but the values are nullable. we can at least ;; leave just the null check. - ;; CHECK: (func $unneeded_is_null (param $struct (ref null $struct)) (param $func funcref) (param $data dataref) (param $i31 i31ref) + ;; CHECK: (func $unneeded_is_null (type $ref?|$struct|_funcref_dataref_i31ref_=>_none) (param $struct (ref null $struct)) (param $func funcref) (param $data dataref) (param $i31 i31ref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $struct) @@ -327,7 +328,7 @@ ;; similar to $unneeded_is, but the values are of mixed kind (is_func of ;; data, etc.). regardless of nullability the result here is always 0. - ;; CHECK: (func $unneeded_is_bad_kinds (param $func funcref) (param $data dataref) (param $i31 i31ref) + ;; CHECK: (func $unneeded_is_bad_kinds (type $funcref_dataref_i31ref_=>_none) (param $func funcref) (param $data dataref) (param $i31 i31ref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -466,7 +467,7 @@ ;; ref.as_non_null is not needed on a non-nullable value, and if something is ;; a func we don't need that either etc., and can just return the value. - ;; CHECK: (func $unneeded_as (param $struct (ref $struct)) (param $func (ref func)) (param $data (ref data)) (param $i31 (ref i31)) + ;; CHECK: (func $unneeded_as (type $ref|$struct|_ref|func|_ref|data|_ref|i31|_=>_none) (param $struct (ref $struct)) (param $func (ref func)) (param $data (ref data)) (param $i31 (ref i31)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $struct) ;; CHECK-NEXT: ) @@ -515,7 +516,7 @@ ;; similar to $unneeded_as, but the values are nullable. we can turn the ;; more specific things into ref.as_non_null. - ;; CHECK: (func $unneeded_as_null (param $struct (ref null $struct)) (param $func funcref) (param $data dataref) (param $i31 i31ref) + ;; CHECK: (func $unneeded_as_null (type $ref?|$struct|_funcref_dataref_i31ref_=>_none) (param $struct (ref null $struct)) (param $func funcref) (param $data dataref) (param $i31 i31ref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (local.get $struct) @@ -580,7 +581,7 @@ ;; similar to $unneeded_as, but the values are of mixed kind (as_func of ;; data, etc.), so we know we will trap - ;; CHECK: (func $unneeded_as_bad_kinds (param $func funcref) (param $data dataref) (param $i31 i31ref) + ;; CHECK: (func $unneeded_as_bad_kinds (type $funcref_dataref_i31ref_=>_none) (param $func funcref) (param $data dataref) (param $i31 i31ref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref func)) ;; CHECK-NEXT: (drop @@ -705,7 +706,7 @@ ) ) - ;; CHECK: (func $unneeded_unreachability + ;; CHECK: (func $unneeded_unreachability (type $void) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.is_func ;; CHECK-NEXT: (unreachable) @@ -739,7 +740,7 @@ ) ) - ;; CHECK: (func $redundant-non-null-casts (param $x (ref null $struct)) (param $y (ref null $array)) (param $f (ref null $void)) + ;; CHECK: (func $redundant-non-null-casts (type $ref?|$struct|_ref?|$array|_ref?|$void|_=>_none) (param $x (ref null $struct)) (param $y (ref null $array)) (param $f (ref null $void)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (local.get $x) @@ -861,7 +862,7 @@ ) ) - ;; CHECK: (func $get-eqref (result eqref) + ;; CHECK: (func $get-eqref (type $none_=>_eqref) (result eqref) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $get-eqref (type $none_=>_eqref) (result eqref) @@ -871,7 +872,7 @@ (unreachable) ) - ;; CHECK: (func $ref-eq (param $x eqref) (param $y eqref) + ;; CHECK: (func $ref-eq (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref) ;; CHECK-NEXT: (local $lx eqref) ;; CHECK-NEXT: (local $ly eqref) ;; CHECK-NEXT: (drop @@ -962,7 +963,7 @@ ) ) - ;; CHECK: (func $nothing + ;; CHECK: (func $nothing (type $void) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $nothing (type $void) @@ -971,7 +972,7 @@ (func $nothing) - ;; CHECK: (func $ref-eq-corner-cases (param $x eqref) + ;; CHECK: (func $ref-eq-corner-cases (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq ;; CHECK-NEXT: (block (result eqref) @@ -1091,7 +1092,7 @@ ) ) - ;; CHECK: (func $ref-eq-ref-cast (param $x eqref) + ;; CHECK: (func $ref-eq-ref-cast (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq ;; CHECK-NEXT: (local.get $x) @@ -1124,7 +1125,7 @@ ) ) - ;; CHECK: (func $flip-cast-of-as-non-null (param $x anyref) + ;; CHECK: (func $flip-cast-of-as-non-null (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (ref.cast_static $struct @@ -1241,7 +1242,7 @@ ) ) ) - ;; CHECK: (func $flip-tee-of-as-non-null (param $x anyref) + ;; CHECK: (func $flip-tee-of-as-non-null (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (local.tee $x @@ -1270,7 +1271,7 @@ ) ) - ;; CHECK: (func $flip-tee-of-as-non-null-non-nullable (param $x (ref any)) + ;; CHECK: (func $flip-tee-of-as-non-null-non-nullable (type $ref|any|_=>_none) (param $x (ref any)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.tee $x ;; CHECK-NEXT: (ref.as_non_null @@ -1300,7 +1301,7 @@ ) ) ) - ;; CHECK: (func $ternary-identical-arms (param $x i32) (param $y (ref null $struct)) (param $z (ref null $struct)) + ;; CHECK: (func $ternary-identical-arms (type $i32_ref?|$struct|_ref?|$struct|_=>_none) (param $x i32) (param $y (ref null $struct)) (param $z (ref null $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (if (result (ref null $struct)) @@ -1331,7 +1332,7 @@ ) ) ) - ;; CHECK: (func $select-identical-arms-but-side-effect (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32) + ;; CHECK: (func $select-identical-arms-but-side-effect (type $ref?|$struct|_ref?|$struct|_i32_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (select ;; CHECK-NEXT: (struct.get_u $struct $i8 @@ -1371,7 +1372,7 @@ ) ) ) - ;; CHECK: (func $ternary-identical-arms-no-side-effect (param $x (ref $struct)) (param $y (ref $struct)) (param $z i32) + ;; CHECK: (func $ternary-identical-arms-no-side-effect (type $ref|$struct|_ref|$struct|_i32_=>_none) (param $x (ref $struct)) (param $y (ref $struct)) (param $z i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (struct.get_u $struct $i8 ;; CHECK-NEXT: (select (result (ref $struct)) @@ -1407,7 +1408,7 @@ ) ) ) - ;; CHECK: (func $if-identical-arms-with-side-effect (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32) + ;; CHECK: (func $if-identical-arms-with-side-effect (type $ref?|$struct|_ref?|$struct|_i32_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (struct.get_u $struct $i8 ;; CHECK-NEXT: (if (result (ref null $struct)) @@ -1445,7 +1446,7 @@ ) ) - ;; CHECK: (func $ref-cast-squared (param $x eqref) + ;; CHECK: (func $ref-cast-squared (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct ;; CHECK-NEXT: (local.get $x) @@ -1469,7 +1470,7 @@ ) ) ) - ;; CHECK: (func $ref-cast-squared-fallthrough (param $x eqref) + ;; CHECK: (func $ref-cast-squared-fallthrough (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct ;; CHECK-NEXT: (local.tee $x @@ -1503,7 +1504,7 @@ ) ) ) - ;; CHECK: (func $ref-cast-cubed (param $x eqref) + ;; CHECK: (func $ref-cast-cubed (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct ;; CHECK-NEXT: (local.get $x) @@ -1529,10 +1530,12 @@ ) ) ) - ;; CHECK: (func $ref-cast-squared-different (param $x eqref) + ;; CHECK: (func $ref-cast-squared-different (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct - ;; CHECK-NEXT: (local.get $x) + ;; CHECK-NEXT: (ref.cast_static $empty + ;; CHECK-NEXT: (local.get $x) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -1556,7 +1559,7 @@ ) ) - ;; CHECK: (func $ref-eq-null (param $x eqref) + ;; CHECK: (func $ref-eq-null (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.is_null ;; CHECK-NEXT: (local.get $x) @@ -1612,7 +1615,7 @@ ) ) - ;; CHECK: (func $ref-eq-possible (param $x eqref) (param $y eqref) + ;; CHECK: (func $ref-eq-possible (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq ;; CHECK-NEXT: (ref.cast_static $struct @@ -1651,7 +1654,7 @@ ) ) - ;; CHECK: (func $ref-eq-impossible (param $x eqref) (param $y eqref) + ;; CHECK: (func $ref-eq-impossible (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -1806,7 +1809,7 @@ ) ) - ;; CHECK: (func $ref-eq-possible-b (param $x eqref) (param $y eqref) + ;; CHECK: (func $ref-eq-possible-b (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq ;; CHECK-NEXT: (ref.as_non_null @@ -1900,7 +1903,7 @@ ) ) - ;; CHECK: (func $hoist-LUB-danger (param $x i32) (param $b (ref $B)) (param $c (ref $C)) (result i32) + ;; CHECK: (func $hoist-LUB-danger (type $i32_ref|$B|_ref|$C|_=>_i32) (param $x i32) (param $b (ref $B)) (param $c (ref $C)) (result i32) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (struct.get $B 1 @@ -1942,7 +1945,7 @@ ) ) - ;; CHECK: (func $incompatible-cast-of-non-null (param $struct (ref $struct)) + ;; CHECK: (func $incompatible-cast-of-non-null (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $array)) ;; CHECK-NEXT: (drop @@ -1970,7 +1973,7 @@ ) ) - ;; CHECK: (func $incompatible-cast-of-null + ;; CHECK: (func $incompatible-cast-of-null (type $void) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result nullref) ;; CHECK-NEXT: (drop @@ -2032,7 +2035,7 @@ ) ) - ;; CHECK: (func $incompatible-cast-of-unknown (param $struct (ref null $struct)) + ;; CHECK: (func $incompatible-cast-of-unknown (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $array ;; CHECK-NEXT: (local.get $struct) @@ -2054,7 +2057,7 @@ ) ) - ;; CHECK: (func $incompatible-test (param $struct (ref null $struct)) + ;; CHECK: (func $incompatible-test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -2083,7 +2086,7 @@ ) ) - ;; CHECK: (func $subtype-compatible (param $A (ref null $A)) (param $B (ref null $B)) + ;; CHECK: (func $subtype-compatible (type $ref?|$A|_ref?|$B|_=>_none) (param $A (ref null $A)) (param $B (ref null $B)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $B ;; CHECK-NEXT: (local.get $A) @@ -2121,7 +2124,7 @@ ) ) ) - ;; CHECK: (func $ref.test-unreachable (param $A (ref null $A)) + ;; CHECK: (func $ref.test-unreachable (type $ref?|$A|_=>_none) (param $A (ref null $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $A ;; CHECK-NEXT: (unreachable) @@ -2145,7 +2148,7 @@ ) ) - ;; CHECK: (func $consecutive-opts-with-unreachable (param $func funcref) + ;; CHECK: (func $consecutive-opts-with-unreachable (type $funcref_=>_none) (param $func funcref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct ;; CHECK-NEXT: (block (result (ref data)) @@ -2188,7 +2191,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-null + ;; CHECK: (func $ref-cast-static-null (type $void) ;; CHECK-NEXT: (local $a (ref null $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result nullref) @@ -2290,7 +2293,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-impossible (param $func (ref func)) + ;; CHECK: (func $ref-cast-static-impossible (type $ref|func|_=>_none) (param $func (ref func)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $struct)) ;; CHECK-NEXT: (drop @@ -2319,7 +2322,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-general (param $a (ref null $A)) (param $b (ref null $B)) + ;; CHECK: (func $ref-cast-static-general (type $ref?|$A|_ref?|$B|_=>_none) (param $a (ref null $A)) (param $b (ref null $B)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $a) ;; CHECK-NEXT: ) @@ -2384,7 +2387,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-squared (param $x eqref) + ;; CHECK: (func $ref-cast-static-squared (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $A ;; CHECK-NEXT: (local.get $x) @@ -2444,7 +2447,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-many (param $x eqref) + ;; CHECK: (func $ref-cast-static-many (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $B-child ;; CHECK-NEXT: (local.get $x) @@ -2567,7 +2570,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-very-many (param $x eqref) + ;; CHECK: (func $ref-cast-static-very-many (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $B-child ;; CHECK-NEXT: (local.get $x) @@ -2612,7 +2615,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-fallthrough-remaining (param $x eqref) + ;; CHECK: (func $ref-cast-static-fallthrough-remaining (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref null $B)) ;; CHECK-NEXT: (call $ref-cast-static-fallthrough-remaining @@ -2659,7 +2662,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-fallthrough-remaining-child (param $x eqref) + ;; CHECK: (func $ref-cast-static-fallthrough-remaining-child (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $B ;; CHECK-NEXT: (block (result eqref) @@ -2705,7 +2708,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-fallthrough-remaining-impossible (param $x (ref eq)) + ;; CHECK: (func $ref-cast-static-fallthrough-remaining-impossible (type $ref|eq|_=>_none) (param $x (ref eq)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result (ref $array)) ;; CHECK-NEXT: (drop @@ -2757,7 +2760,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-fallthrough-remaining-nonnull (param $x (ref eq)) + ;; CHECK: (func $ref-cast-static-fallthrough-remaining-nonnull (type $ref|eq|_=>_none) (param $x (ref eq)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $A ;; CHECK-NEXT: (block (result (ref eq)) @@ -2805,7 +2808,7 @@ ) ) - ;; CHECK: (func $ref-cast-static-squared-impossible (param $x eqref) + ;; CHECK: (func $ref-cast-static-squared-impossible (type $eqref_=>_none) (param $x eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast_static $struct ;; CHECK-NEXT: (ref.cast_static $array @@ -2865,7 +2868,7 @@ ) ) - ;; CHECK: (func $ref-test-static-same-type (param $nullable (ref null $A)) (param $non-nullable (ref $A)) + ;; CHECK: (func $ref-test-static-same-type (type $ref?|$A|_ref|$A|_=>_none) (param $nullable (ref null $A)) (param $non-nullable (ref $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $A ;; CHECK-NEXT: (local.get $nullable) @@ -2911,7 +2914,7 @@ ) ) - ;; CHECK: (func $ref-test-static-subtype (param $nullable (ref null $B)) (param $non-nullable (ref $B)) + ;; CHECK: (func $ref-test-static-subtype (type $ref?|$B|_ref|$B|_=>_none) (param $nullable (ref null $B)) (param $non-nullable (ref $B)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $A ;; CHECK-NEXT: (local.get $nullable) @@ -2955,7 +2958,7 @@ ) ) - ;; CHECK: (func $ref-test-static-supertype (param $nullable (ref null $A)) (param $non-nullable (ref $A)) + ;; CHECK: (func $ref-test-static-supertype (type $ref?|$A|_ref|$A|_=>_none) (param $nullable (ref null $A)) (param $non-nullable (ref $A)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.test_static $B ;; CHECK-NEXT: (local.get $nullable) @@ -2994,7 +2997,7 @@ ) ) - ;; CHECK: (func $ref-test-static-impossible (param $nullable (ref null $array)) (param $non-nullable (ref $array)) + ;; CHECK: (func $ref-test-static-impossible (type $ref?|$array|_ref|$array|_=>_none) (param $nullable (ref null $array)) (param $non-nullable (ref $array)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (drop @@ -3044,7 +3047,7 @@ ) ) - ;; CHECK: (func $ref-boolean (param $x eqref) (param $y eqref) + ;; CHECK: (func $ref-boolean (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.eq ;; CHECK-NEXT: (local.get $x) @@ -3110,7 +3113,7 @@ ) ) - ;; CHECK: (func $impossible (result (ref none)) + ;; CHECK: (func $impossible (type $none_=>_ref|none|) (result (ref none)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $impossible (type $none_=>_ref|none|) (result (ref none)) @@ -3120,7 +3123,7 @@ (unreachable) ) - ;; CHECK: (func $bottom-type-accessors (param $bot (ref none)) (param $null nullref) + ;; CHECK: (func $bottom-type-accessors (type $ref|none|_nullref_=>_none) (param $bot (ref none)) (param $null nullref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/optimize-instructions-ignore-traps.wast b/test/lit/passes/optimize-instructions-ignore-traps.wast index a199f1b46..a2602bf4c 100644 --- a/test/lit/passes/optimize-instructions-ignore-traps.wast +++ b/test/lit/passes/optimize-instructions-ignore-traps.wast @@ -12,7 +12,7 @@ (import "a" "b" (func $get-i32 (result i32))) - ;; CHECK: (func $conditionals (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $conditionals (type $0) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) @@ -181,7 +181,7 @@ (local.get $5) ) ) - ;; CHECK: (func $side-effect (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $side-effect (type $0) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) @@ -350,7 +350,7 @@ (local.get $5) ) ) - ;; CHECK: (func $flip (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $flip (type $0) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (local $2 i32) ;; CHECK-NEXT: (local $3 i32) ;; CHECK-NEXT: (local $4 i32) @@ -516,7 +516,7 @@ (local.get $5) ) ) - ;; CHECK: (func $invalidate-conditionalizeExpensiveOnBitwise (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $invalidate-conditionalizeExpensiveOnBitwise (type $0) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.and @@ -580,7 +580,7 @@ ) (return (local.get $1)) ) - ;; CHECK: (func $invalidate-conditionalizeExpensiveOnBitwise-ok (param $0 i32) (param $1 i32) (result i32) + ;; CHECK: (func $invalidate-conditionalizeExpensiveOnBitwise-ok (type $0) (param $0 i32) (param $1 i32) (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (if (result i32) @@ -643,7 +643,7 @@ (return (local.get $1)) ) - ;; CHECK: (func $conditionalize-if-type-change (result f64) + ;; CHECK: (func $conditionalize-if-type-change (type $none_=>_f64) (result f64) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (loop $label$1 (result f32) @@ -717,7 +717,7 @@ ) (f64.const -nan:0xfffffffffffff) ) - ;; CHECK: (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) + ;; CHECK: (func $optimize-bulk-memory-copy (type $i32_i32_i32_=>_none) (param $dst i32) (param $src i32) (param $sz i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $dst) @@ -775,7 +775,7 @@ ) ) - ;; CHECK: (func $optimize-bulk-memory-fill (param $dst i32) (param $val i32) (param $sz i32) + ;; CHECK: (func $optimize-bulk-memory-fill (type $i32_i32_i32_=>_none) (param $dst i32) (param $val i32) (param $sz i32) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (local.get $dst) diff --git a/test/lit/passes/optimize-instructions-iit-eh.wast b/test/lit/passes/optimize-instructions-iit-eh.wast index ee6b78738..6d8a8fe39 100644 --- a/test/lit/passes/optimize-instructions-iit-eh.wast +++ b/test/lit/passes/optimize-instructions-iit-eh.wast @@ -8,7 +8,7 @@ ;; CHECK: (tag $e (param (ref null $struct.A))) (tag $e (param (ref null $struct.A))) - ;; CHECK: (func $ref-cast-statically-removed + ;; CHECK: (func $ref-cast-statically-removed (type $none_=>_none) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/poppify-globals.wast b/test/lit/passes/poppify-globals.wast index 869015cb7..205fac513 100644 --- a/test/lit/passes/poppify-globals.wast +++ b/test/lit/passes/poppify-globals.wast @@ -31,7 +31,7 @@ ;; CHECK: (global $other-tuple$0 i32 (global.get $tuple$0)) - ;; CHECK: (func $global-get-tuple (result i32 i64 f32) + ;; CHECK: (func $global-get-tuple (type $none_=>_i32_i64_f32) (result i32 i64 f32) ;; CHECK-NEXT: (global.get $tuple$0) ;; CHECK-NEXT: (global.get $tuple$1_0) ;; CHECK-NEXT: (global.get $tuple$2) @@ -40,7 +40,7 @@ (global.get $tuple) ) - ;; CHECK: (func $global-set-tuple + ;; CHECK: (func $global-set-tuple (type $none_=>_none) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) ;; CHECK-NEXT: (f32.const 2) diff --git a/test/lit/passes/poppify.wast b/test/lit/passes/poppify.wast index 4675d0a97..88f46de8c 100644 --- a/test/lit/passes/poppify.wast +++ b/test/lit/passes/poppify.wast @@ -6,14 +6,14 @@ ;; CHECK: (tag $e (param i32)) (tag $e (param i32)) - ;; CHECK: (func $id (param $x i32) (result i32) + ;; CHECK: (func $id (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) (func $id (param $x i32) (result i32) (local.get $x) ) - ;; CHECK: (func $add (param $x i32) (param $y i32) (result i32) + ;; CHECK: (func $add (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (local.get $y) ;; CHECK-NEXT: (i32.add @@ -28,7 +28,7 @@ ) ) - ;; CHECK: (func $expr-tree (result i32) + ;; CHECK: (func $expr-tree (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (i32.mul @@ -59,7 +59,7 @@ ) ) - ;; CHECK: (func $block (result i32) + ;; CHECK: (func $block (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -70,7 +70,7 @@ ) ) - ;; CHECK: (func $nested (result i32) + ;; CHECK: (func $nested (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $block (result i32) ;; CHECK-NEXT: (block $block0 (result i32) ;; CHECK-NEXT: (block $block1 (result i32) @@ -89,7 +89,7 @@ ) ) - ;; CHECK: (func $nested-nonames (result i32) + ;; CHECK: (func $nested-nonames (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) (func $nested-nonames (result i32) @@ -102,7 +102,7 @@ ) ) - ;; CHECK: (func $child-blocks (result i32) + ;; CHECK: (func $child-blocks (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $block (result i32) ;; CHECK-NEXT: (block $block0 (result i32) ;; CHECK-NEXT: (i32.const 0) @@ -129,7 +129,7 @@ ) ) - ;; CHECK: (func $child-blocks-nonames (result i32) + ;; CHECK: (func $child-blocks-nonames (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (i32.add @@ -150,7 +150,7 @@ ) ) - ;; CHECK: (func $block-br (result i32) + ;; CHECK: (func $block-br (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (block $l (result i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (i32.const 0) @@ -168,7 +168,7 @@ ) ) - ;; CHECK: (func $loop + ;; CHECK: (func $loop (type $none_=>_none) ;; CHECK-NEXT: (loop $l ;; CHECK-NEXT: (br $l) ;; CHECK-NEXT: ) @@ -180,7 +180,7 @@ ) ) - ;; CHECK: (func $if + ;; CHECK: (func $if (type $none_=>_none) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (pop i32) @@ -194,7 +194,7 @@ ) ) - ;; CHECK: (func $if-else (result i32) + ;; CHECK: (func $if-else (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (pop i32) @@ -210,7 +210,7 @@ ) ) - ;; CHECK: (func $try-catch (result i32) + ;; CHECK: (func $try-catch (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try $try (result i32) ;; CHECK-NEXT: (do ;; CHECK-NEXT: (i32.const 0) @@ -241,7 +241,7 @@ ) ) - ;; CHECK: (func $try-delegate (result i32) + ;; CHECK: (func $try-delegate (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (try $l0 (result i32) ;; CHECK-NEXT: (do ;; CHECK-NEXT: (try $try @@ -277,7 +277,7 @@ ) ) - ;; CHECK: (func $tuple (result i32 i64) + ;; CHECK: (func $tuple (type $none_=>_i32_i64) (result i32 i64) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) ;; CHECK-NEXT: ) @@ -288,7 +288,7 @@ ) ) - ;; CHECK: (func $extract-first (result i32) + ;; CHECK: (func $extract-first (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) ;; CHECK-NEXT: (f32.const 2) @@ -309,7 +309,7 @@ ) ) - ;; CHECK: (func $extract-middle (result i64) + ;; CHECK: (func $extract-middle (type $none_=>_i64) (result i64) ;; CHECK-NEXT: (local $0 i64) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) @@ -335,7 +335,7 @@ ) ) - ;; CHECK: (func $extract-last (result f32) + ;; CHECK: (func $extract-last (type $none_=>_f32) (result f32) ;; CHECK-NEXT: (local $0 f32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) @@ -361,7 +361,7 @@ ) ) - ;; CHECK: (func $drop + ;; CHECK: (func $drop (type $none_=>_none) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (pop i32) @@ -373,7 +373,7 @@ ) ) - ;; CHECK: (func $drop-tuple + ;; CHECK: (func $drop-tuple (type $none_=>_none) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) ;; CHECK-NEXT: (drop @@ -392,7 +392,7 @@ ) ) - ;; CHECK: (func $local-get-tuple (result i32 i64) + ;; CHECK: (func $local-get-tuple (type $none_=>_i32_i64) (result i32 i64) ;; CHECK-NEXT: (local $x (i32 i64)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i64) @@ -404,7 +404,7 @@ (local.get $x) ) - ;; CHECK: (func $local-set + ;; CHECK: (func $local-set (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (local.set $x @@ -418,7 +418,7 @@ ) ) - ;; CHECK: (func $local-set-tuple + ;; CHECK: (func $local-set-tuple (type $none_=>_none) ;; CHECK-NEXT: (local $x (i32 i64)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i64) @@ -441,7 +441,7 @@ ) ) - ;; CHECK: (func $local-tee-tuple (result i32 i64) + ;; CHECK: (func $local-tee-tuple (type $none_=>_i32_i64) (result i32 i64) ;; CHECK-NEXT: (local $x (i32 i64)) ;; CHECK-NEXT: (local $1 i32) ;; CHECK-NEXT: (local $2 i64) @@ -465,7 +465,7 @@ ) ) - ;; CHECK: (func $break-tuple (result i32 i64) + ;; CHECK: (func $break-tuple (type $none_=>_i32_i64) (result i32 i64) ;; CHECK-NEXT: (block $l (result i32 i64) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) @@ -485,7 +485,7 @@ ) ) - ;; CHECK: (func $return-tuple (result i32 i64) + ;; CHECK: (func $return-tuple (type $none_=>_i32_i64) (result i32 i64) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i64.const 1) ;; CHECK-NEXT: (return diff --git a/test/lit/passes/precompute-gc-immutable.wast b/test/lit/passes/precompute-gc-immutable.wast index ebb26bfb5..95e8d0e96 100644 --- a/test/lit/passes/precompute-gc-immutable.wast +++ b/test/lit/passes/precompute-gc-immutable.wast @@ -3,10 +3,10 @@ ;; RUN: foreach %s %t wasm-opt --precompute-propagate -all --nominal -S -o - | filecheck %s (module - ;; CHECK: (type $struct-imm (struct_subtype (field i32) data)) + ;; CHECK: (type $struct-imm (struct (field i32))) (type $struct-imm (struct_subtype i32 data)) - ;; CHECK: (type $struct-mut (struct_subtype (field (mut i32)) data)) + ;; CHECK: (type $struct-mut (struct (field (mut i32)))) (type $struct-mut (struct_subtype (mut i32) data)) ;; CHECK: (func $propagate (type $none_=>_none) @@ -358,7 +358,7 @@ (module ;; One field is immutable, the other is not, so we can only propagate the ;; former. - ;; CHECK: (type $struct (struct_subtype (field (mut i32)) (field i32) data)) + ;; CHECK: (type $struct (struct (field (mut i32)) (field i32))) (type $struct (struct_subtype (mut i32) i32 data)) ;; CHECK: (func $propagate (type $none_=>_none) @@ -410,9 +410,9 @@ ;; Create an immutable vtable in an immutable field, which lets us read from ;; it. - ;; CHECK: (type $object (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $object (struct (field (ref $vtable)))) - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct_subtype funcref data)) (type $object (struct_subtype (ref $vtable) data)) @@ -458,9 +458,9 @@ (module ;; As above, but make $vtable not immutable, which prevents optimization. - ;; CHECK: (type $object (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $object (struct (field (ref $vtable)))) - ;; CHECK: (type $vtable (struct_subtype (field (mut funcref)) data)) + ;; CHECK: (type $vtable (struct (field (mut funcref)))) (type $vtable (struct_subtype (mut funcref) data)) (type $object (struct_subtype (ref $vtable) data)) @@ -511,9 +511,9 @@ (module ;; As above, but make $object not immutable, which prevents optimization. - ;; CHECK: (type $object (struct_subtype (field (mut (ref $vtable))) data)) + ;; CHECK: (type $object (struct (field (mut (ref $vtable))))) - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct_subtype funcref data)) (type $object (struct_subtype (mut (ref $vtable)) data)) @@ -562,9 +562,9 @@ ;; Create an immutable vtable in an immutable global, which we can optimize ;; with. - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct_subtype funcref data)) - ;; CHECK: (type $object (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $object (struct (field (ref $vtable)))) (type $object (struct_subtype (ref $vtable) data)) ;; CHECK: (global $vtable (ref $vtable) (struct.new $vtable @@ -613,9 +613,9 @@ ;; Create an immutable vtable in an mutable global, whose mutability prevents ;; optimization. - ;; CHECK: (type $vtable (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable (struct (field funcref))) (type $vtable (struct_subtype funcref data)) - ;; CHECK: (type $object (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $object (struct (field (ref $vtable)))) (type $object (struct_subtype (ref $vtable) data)) ;; CHECK: (global $vtable (mut (ref $vtable)) (struct.new $vtable @@ -668,9 +668,9 @@ ;; Create an immutable vtable in an immutable global, but using an array ;; instead of a struct. - ;; CHECK: (type $vtable (array_subtype funcref data)) + ;; CHECK: (type $vtable (array funcref)) (type $vtable (array_subtype funcref data)) - ;; CHECK: (type $object (struct_subtype (field (ref $vtable)) data)) + ;; CHECK: (type $object (struct (field (ref $vtable)))) (type $object (struct_subtype (ref $vtable) data)) ;; CHECK: (global $vtable (ref $vtable) (array.init_static $vtable @@ -739,16 +739,16 @@ ;; data that is filled with vtables of different types. On usage, we do a ;; cast of the vtable type. - ;; CHECK: (type $itable (array_subtype dataref data)) + ;; CHECK: (type $itable (array dataref)) (type $itable (array_subtype (ref null data) data)) - ;; CHECK: (type $object (struct_subtype (field (ref $itable)) data)) + ;; CHECK: (type $object (struct (field (ref $itable)))) (type $object (struct_subtype (ref $itable) data)) - ;; CHECK: (type $vtable-0 (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable-0 (struct (field funcref))) (type $vtable-0 (struct_subtype funcref data)) - ;; CHECK: (type $vtable-1 (struct_subtype (field funcref) data)) + ;; CHECK: (type $vtable-1 (struct (field funcref))) (type $vtable-1 (struct_subtype funcref data)) ;; CHECK: (global $itable (ref $itable) (array.init_static $itable diff --git a/test/lit/passes/precompute-gc.wast b/test/lit/passes/precompute-gc.wast index 896158637..7c4292ea2 100644 --- a/test/lit/passes/precompute-gc.wast +++ b/test/lit/passes/precompute-gc.wast @@ -6,11 +6,11 @@ (module ;; CHECK: (type $empty (struct )) - ;; NOMNL: (type $empty (struct_subtype data)) + ;; NOMNL: (type $empty (struct )) (type $empty (struct)) ;; CHECK: (type $struct (struct (field (mut i32)))) - ;; NOMNL: (type $struct (struct_subtype (field (mut i32)) data)) + ;; NOMNL: (type $struct (struct (field (mut i32)))) (type $struct (struct (mut i32))) ;; two incompatible struct types @@ -18,9 +18,9 @@ ;; CHECK: (type $func-return-i32 (func (result i32))) ;; CHECK: (type $B (struct (field (mut f64)))) - ;; NOMNL: (type $func-return-i32 (func_subtype (result i32) func)) + ;; NOMNL: (type $func-return-i32 (func (result i32))) - ;; NOMNL: (type $B (struct_subtype (field (mut f64)) data)) + ;; NOMNL: (type $B (struct (field (mut f64)))) (type $B (struct (field (mut f64)))) (type $func-return-i32 (func (result i32))) @@ -29,7 +29,7 @@ ;; NOMNL: (import "fuzzing-support" "log-i32" (func $log (param i32))) (import "fuzzing-support" "log-i32" (func $log (param i32))) - ;; CHECK: (func $test-fallthrough (result i32) + ;; CHECK: (func $test-fallthrough (type $func-return-i32) (result i32) ;; CHECK-NEXT: (local $x funcref) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (block (result nullfuncref) @@ -73,7 +73,7 @@ ) ) - ;; CHECK: (func $load-from-struct + ;; CHECK: (func $load-from-struct (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref null $struct)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (struct.new $struct @@ -167,7 +167,7 @@ (struct.get $struct 0 (local.get $x)) ) ) - ;; CHECK: (func $load-from-struct-bad-merge (param $i i32) + ;; CHECK: (func $load-from-struct-bad-merge (type $i32_=>_none) (param $i i32) ;; CHECK-NEXT: (local $x (ref null $struct)) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $i) @@ -229,7 +229,7 @@ (struct.get $struct 0 (local.get $x)) ) ) - ;; CHECK: (func $modify-gc-heap (param $x (ref null $struct)) + ;; CHECK: (func $modify-gc-heap (type $ref?|$struct|_=>_none) (param $x (ref null $struct)) ;; CHECK-NEXT: (struct.set $struct 0 ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (i32.add @@ -264,7 +264,7 @@ ) ;; --fuzz-exec verifies the output of this function, checking that the change ;; makde in modify-gc-heap is not ignored - ;; CHECK: (func $load-from-struct-bad-escape + ;; CHECK: (func $load-from-struct-bad-escape (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref null $struct)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (struct.new $struct @@ -310,7 +310,7 @@ (struct.get $struct 0 (local.get $x)) ) ) - ;; CHECK: (func $load-from-struct-bad-arrive (param $x (ref null $struct)) + ;; CHECK: (func $load-from-struct-bad-arrive (type $ref?|$struct|_=>_none) (param $x (ref null $struct)) ;; CHECK-NEXT: (call $log ;; CHECK-NEXT: (struct.get $struct 0 ;; CHECK-NEXT: (local.get $x) @@ -330,7 +330,7 @@ (struct.get $struct 0 (local.get $x)) ) ) - ;; CHECK: (func $ref-comparisons (param $x (ref null $struct)) (param $y (ref null $struct)) + ;; CHECK: (func $ref-comparisons (type $ref?|$struct|_ref?|$struct|_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct)) ;; CHECK-NEXT: (local $z (ref null $struct)) ;; CHECK-NEXT: (local $w (ref null $struct)) ;; CHECK-NEXT: (call $log @@ -413,7 +413,7 @@ ) ) ) - ;; CHECK: (func $new-ref-comparisons (result i32) + ;; CHECK: (func $new-ref-comparisons (type $func-return-i32) (result i32) ;; CHECK-NEXT: (local $x (ref null $struct)) ;; CHECK-NEXT: (local $y (ref null $struct)) ;; CHECK-NEXT: (local $tempresult i32) @@ -470,7 +470,7 @@ ;; and that 1 is propagated to here. (local.get $tempresult) ) - ;; CHECK: (func $propagate-equal (result i32) + ;; CHECK: (func $propagate-equal (type $func-return-i32) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local.set $tempresult @@ -513,7 +513,7 @@ ;; that the ref.eq itself cannot be precomputed away (as it has side effects). (local.get $tempresult) ) - ;; CHECK: (func $propagate-unequal (result i32) + ;; CHECK: (func $propagate-unequal (type $func-return-i32) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local.set $tempresult @@ -546,7 +546,7 @@ (local.get $tempresult) ) - ;; CHECK: (func $propagate-uncertain-param (param $input (ref $empty)) (result i32) + ;; CHECK: (func $propagate-uncertain-param (type $ref|$empty|_=>_i32) (param $input (ref $empty)) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local.set $tempresult @@ -582,7 +582,7 @@ (local.get $tempresult) ) - ;; CHECK: (func $propagate-different-params (param $input1 (ref $empty)) (param $input2 (ref $empty)) (result i32) + ;; CHECK: (func $propagate-different-params (type $ref|$empty|_ref|$empty|_=>_i32) (param $input1 (ref $empty)) (param $input2 (ref $empty)) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local.set $tempresult ;; CHECK-NEXT: (ref.eq @@ -614,7 +614,7 @@ (local.get $tempresult) ) - ;; CHECK: (func $propagate-same-param (param $input (ref $empty)) (result i32) + ;; CHECK: (func $propagate-same-param (type $ref|$empty|_=>_i32) (param $input (ref $empty)) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local.set $tempresult ;; CHECK-NEXT: (ref.eq @@ -647,7 +647,7 @@ (local.get $tempresult) ) - ;; CHECK: (func $propagate-uncertain-local (result i32) + ;; CHECK: (func $propagate-uncertain-local (type $func-return-i32) (result i32) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local $stashedref (ref null $empty)) @@ -728,7 +728,7 @@ (local.get $tempresult) ) - ;; CHECK: (func $propagate-uncertain-loop + ;; CHECK: (func $propagate-uncertain-loop (type $none_=>_none) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local $stashedref (ref null $empty)) @@ -812,7 +812,7 @@ ) ) - ;; CHECK: (func $propagate-certain-loop + ;; CHECK: (func $propagate-certain-loop (type $none_=>_none) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local $stashedref (ref null $empty)) @@ -881,7 +881,7 @@ ) ) - ;; CHECK: (func $propagate-certain-loop-2 + ;; CHECK: (func $propagate-certain-loop-2 (type $none_=>_none) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local $stashedref (ref null $empty)) @@ -950,7 +950,7 @@ ) ) - ;; CHECK: (func $propagate-possibly-certain-loop + ;; CHECK: (func $propagate-possibly-certain-loop (type $none_=>_none) ;; CHECK-NEXT: (local $tempresult i32) ;; CHECK-NEXT: (local $tempref (ref null $empty)) ;; CHECK-NEXT: (local $stashedref (ref null $empty)) @@ -1042,7 +1042,7 @@ ) ) - ;; CHECK: (func $helper (param $0 i32) (result i32) + ;; CHECK: (func $helper (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $helper (type $i32_=>_i32) (param $0 i32) (result i32) @@ -1052,7 +1052,7 @@ (unreachable) ) - ;; CHECK: (func $odd-cast-and-get + ;; CHECK: (func $odd-cast-and-get (type $none_=>_none) ;; CHECK-NEXT: (local $temp (ref null $B)) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (ref.null none) @@ -1100,7 +1100,7 @@ ) ) - ;; CHECK: (func $odd-cast-and-get-tuple + ;; CHECK: (func $odd-cast-and-get-tuple (type $none_=>_none) ;; CHECK-NEXT: (local $temp ((ref null $B) i32)) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (tuple.make @@ -1154,7 +1154,7 @@ ) ) - ;; CHECK: (func $receive-f64 (param $0 f64) + ;; CHECK: (func $receive-f64 (type $f64_=>_none) (param $0 f64) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $receive-f64 (type $f64_=>_none) (param $0 f64) @@ -1164,7 +1164,7 @@ (unreachable) ) - ;; CHECK: (func $odd-cast-and-get-non-null (param $temp (ref $func-return-i32)) + ;; CHECK: (func $odd-cast-and-get-non-null (type $ref|$func-return-i32|_=>_none) (param $temp (ref $func-return-i32)) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (ref.cast_static $func-return-i32 ;; CHECK-NEXT: (ref.func $receive-f64) @@ -1204,7 +1204,7 @@ ) ) - ;; CHECK: (func $new_block_unreachable (result anyref) + ;; CHECK: (func $new_block_unreachable (type $none_=>_anyref) (result anyref) ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block @@ -1235,7 +1235,7 @@ ) ) - ;; CHECK: (func $br_on_cast-on-creation (result (ref $empty)) + ;; CHECK: (func $br_on_cast-on-creation (type $none_=>_ref|$empty|) (result (ref $empty)) ;; CHECK-NEXT: (block $label (result (ref $empty)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_on_cast_static $label $empty @@ -1266,7 +1266,7 @@ ) ) - ;; CHECK: (func $ref.is_null (param $param i32) + ;; CHECK: (func $ref.is_null (type $i32_=>_none) (param $param i32) ;; CHECK-NEXT: (local $ref (ref null $empty)) ;; CHECK-NEXT: (local.set $ref ;; CHECK-NEXT: (struct.new_default $empty) @@ -1372,7 +1372,7 @@ ) ) - ;; CHECK: (func $remove-set (result (ref func)) + ;; CHECK: (func $remove-set (type $none_=>_ref|func|) (result (ref func)) ;; CHECK-NEXT: (local $nn funcref) ;; CHECK-NEXT: (local $i i32) ;; CHECK-NEXT: (loop $loop diff --git a/test/lit/passes/remove-unused-brs-gc.wast b/test/lit/passes/remove-unused-brs-gc.wast index 9473b0627..23d43bdb5 100644 --- a/test/lit/passes/remove-unused-brs-gc.wast +++ b/test/lit/passes/remove-unused-brs-gc.wast @@ -6,7 +6,7 @@ ;; CHECK: (type $struct (struct )) (type $struct (struct )) - ;; CHECK: (func $br_on_non_data-1 + ;; CHECK: (func $br_on_non_data-1 (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $any (result i31ref) ;; CHECK-NEXT: (drop @@ -33,7 +33,7 @@ ) ) ) - ;; CHECK: (func $br_on_non_data-2 (param $data (ref data)) + ;; CHECK: (func $br_on_non_data-2 (type $ref|data|_=>_none) (param $data (ref data)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $any (result nullref) ;; CHECK-NEXT: (drop @@ -57,7 +57,7 @@ ) ) - ;; CHECK: (func $br_on-if (param $0 (ref data)) + ;; CHECK: (func $br_on-if (type $ref|data|_=>_none) (param $0 (ref data)) ;; CHECK-NEXT: (block $label ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (select (result (ref data)) @@ -88,7 +88,7 @@ ) ) - ;; CHECK: (func $nested_br_on (result dataref) + ;; CHECK: (func $nested_br_on (type $none_=>_dataref) (result dataref) ;; CHECK-NEXT: (block $label$1 (result (ref $struct)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br $label$1 @@ -114,7 +114,7 @@ ) ) - ;; CHECK: (func $br_on_cast_static (result (ref $struct)) + ;; CHECK: (func $br_on_cast_static (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (local $temp (ref null $struct)) ;; CHECK-NEXT: (block $block (result (ref $struct)) ;; CHECK-NEXT: (drop @@ -139,7 +139,7 @@ ) ) - ;; CHECK: (func $br_on_cast_static_no (result (ref $struct)) + ;; CHECK: (func $br_on_cast_static_no (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (local $temp (ref null $struct)) ;; CHECK-NEXT: (block $block (result (ref $struct)) ;; CHECK-NEXT: (drop @@ -163,7 +163,7 @@ ) ) - ;; CHECK: (func $br_on_cast_fail_static (result (ref $struct)) + ;; CHECK: (func $br_on_cast_fail_static (type $none_=>_ref|$struct|) (result (ref $struct)) ;; CHECK-NEXT: (local $temp (ref null $struct)) ;; CHECK-NEXT: (block $block ;; CHECK-NEXT: (drop @@ -186,7 +186,7 @@ ) ) - ;; CHECK: (func $casts-are-costly (param $x i32) + ;; CHECK: (func $casts-are-costly (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (local.get $x) diff --git a/test/lit/passes/remove-unused-brs.wast b/test/lit/passes/remove-unused-brs.wast index 7db4bdcd5..4c384f34d 100644 --- a/test/lit/passes/remove-unused-brs.wast +++ b/test/lit/passes/remove-unused-brs.wast @@ -5,7 +5,7 @@ (module ;; Regression test in which we need to calculate a proper LUB. - ;; CHECK: (func $selectify-fresh-lub (param $x i32) (result anyref) + ;; CHECK: (func $selectify-fresh-lub (type $i32_=>_anyref) (param $x i32) (result anyref) ;; CHECK-NEXT: (select (result nullref) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: (ref.null none) @@ -24,7 +24,7 @@ ) ) - ;; CHECK: (func $selectify-simple (param $0 i32) (result i32) + ;; CHECK: (func $selectify-simple (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: (i32.lt_u @@ -69,7 +69,7 @@ ) ) - ;; CHECK: (func $restructure-br_if (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: (i32.const 100) @@ -96,13 +96,13 @@ ) ) - ;; CHECK: (func $nothing + ;; CHECK: (func $nothing (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $nothing) - ;; CHECK: (func $restructure-br_if-condition-reorderable (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-condition-reorderable (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (call $nothing) @@ -135,7 +135,7 @@ ) ) - ;; CHECK: (func $restructure-br_if-value-effectful (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-value-effectful (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (select ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (call $nothing) @@ -177,7 +177,7 @@ ) ) - ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-1 (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-1 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (block $x (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_if $x @@ -215,14 +215,14 @@ ) ) - ;; CHECK: (func $get-i32 (result i32) + ;; CHECK: (func $get-i32 (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 400) ;; CHECK-NEXT: ) (func $get-i32 (result i32) (i32.const 400) ) - ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-2 (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-2 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (block $x (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_if $x @@ -261,7 +261,7 @@ (call $get-i32) ) ) - ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-3 (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-3 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (block $x (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_if $x @@ -294,7 +294,7 @@ ) ) - ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-4 (param $x i32) (result i32) + ;; CHECK: (func $restructure-br_if-value-effectful-corner-case-4 (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (block $x (result i32) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_if $x @@ -329,7 +329,7 @@ ) ) - ;; CHECK: (func $restructure-select-no-multivalue + ;; CHECK: (func $restructure-select-no-multivalue (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $block (result i32 i32) ;; CHECK-NEXT: (drop @@ -376,7 +376,7 @@ ) ) - ;; CHECK: (func $if-of-if + ;; CHECK: (func $if-of-if (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (select @@ -404,7 +404,7 @@ ) ) - ;; CHECK: (func $if-of-if-but-side-effects + ;; CHECK: (func $if-of-if-but-side-effects (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $x @@ -435,7 +435,7 @@ ) ) - ;; CHECK: (func $if-of-if-but-too-costly + ;; CHECK: (func $if-of-if-but-too-costly (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $x @@ -482,7 +482,7 @@ ) ) - ;; CHECK: (func $if-of-if-but-inner-else + ;; CHECK: (func $if-of-if-but-inner-else (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $x @@ -510,7 +510,7 @@ ) ) - ;; CHECK: (func $if-of-if-but-outer-else + ;; CHECK: (func $if-of-if-but-outer-else (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $x diff --git a/test/lit/passes/remove-unused-module-elements-refs.wast b/test/lit/passes/remove-unused-module-elements-refs.wast index 2c9df16f8..1e23099b9 100644 --- a/test/lit/passes/remove-unused-module-elements-refs.wast +++ b/test/lit/passes/remove-unused-module-elements-refs.wast @@ -2,11 +2,11 @@ ;; RUN: foreach %s %t wasm-opt --remove-unused-module-elements --nominal -all -S -o - | filecheck %s (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) - ;; CHECK: (type $ref?|$A|_=>_none (func_subtype (param (ref null $A)) func)) + ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) - ;; CHECK: (type $B (func_subtype func)) + ;; CHECK: (type $B (func)) (type $B (func)) ;; CHECK: (elem declare func $target-A $target-B) @@ -76,7 +76,7 @@ ;; As above, but reverse the order inside $foo, so we see the CallRef first. (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) (type $B (func)) @@ -118,11 +118,11 @@ ;; As above, but interleave CallRefs with RefFuncs. (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) (type $B (func)) - ;; CHECK: (type $ref?|$A|_=>_none (func_subtype (param (ref null $A)) func)) + ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) ;; CHECK: (elem declare func $target-A-1 $target-A-2) @@ -179,11 +179,11 @@ ;; As above, with the order reversed inside $foo. The results should be the ;; same. (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) (type $B (func)) - ;; CHECK: (type $ref?|$A|_=>_none (func_subtype (param (ref null $A)) func)) + ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) ;; CHECK: (elem declare func $target-A-1 $target-A-2) @@ -240,10 +240,10 @@ ;; The call.without.effects intrinsic does a call to the reference given to it, ;; but for now other imports do not (until we add a flag for closed-world). (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) - ;; CHECK: (type $funcref_=>_none (func_subtype (param funcref) func)) + ;; CHECK: (type $funcref_=>_none (func (param funcref))) ;; CHECK: (import "binaryen-intrinsics" "call.without.effects" (func $call-without-effects (param funcref))) (import "binaryen-intrinsics" "call.without.effects" @@ -293,12 +293,12 @@ ;; As above, but now the call to the intrinsic does not let us see the exact ;; function being called. (module - ;; CHECK: (type $A (func_subtype func)) + ;; CHECK: (type $A (func)) (type $A (func)) - ;; CHECK: (type $funcref_=>_none (func_subtype (param funcref) func)) + ;; CHECK: (type $funcref_=>_none (func (param funcref))) - ;; CHECK: (type $ref?|$A|_=>_none (func_subtype (param (ref null $A)) func)) + ;; CHECK: (type $ref?|$A|_=>_none (func (param (ref null $A)))) ;; CHECK: (import "binaryen-intrinsics" "call.without.effects" (func $call-without-effects (param funcref))) (import "binaryen-intrinsics" "call.without.effects" diff --git a/test/lit/passes/remove-unused-names-eh.wast b/test/lit/passes/remove-unused-names-eh.wast index e7a26cbae..7f6e09839 100644 --- a/test/lit/passes/remove-unused-names-eh.wast +++ b/test/lit/passes/remove-unused-names-eh.wast @@ -5,7 +5,7 @@ ;; CHECK: (tag $tag$0 (param i32)) (tag $tag$0 (param i32)) - ;; CHECK: (func $func0 + ;; CHECK: (func $func0 (type $none_=>_none) ;; CHECK-NEXT: (try $label$9 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) @@ -52,7 +52,7 @@ ) ) - ;; CHECK: (func $func1 + ;; CHECK: (func $func1 (type $none_=>_none) ;; CHECK-NEXT: (try ;; CHECK-NEXT: (do ;; CHECK-NEXT: (nop) diff --git a/test/lit/passes/roundtrip-gc-types.wast b/test/lit/passes/roundtrip-gc-types.wast index acbfea3a8..7397d08ba 100644 --- a/test/lit/passes/roundtrip-gc-types.wast +++ b/test/lit/passes/roundtrip-gc-types.wast @@ -7,21 +7,26 @@ ;; types already existed in the store. (module - ;; CHECK: (type $A (struct (field (ref $C)))) - ;; NOMNL: (type $A (struct_subtype (field (ref $C)) data)) - (type $A (struct (field (ref $C)))) - ;; CHECK: (type $C (struct (field (mut (ref $B))))) + (rec + ;; CHECK: (rec + ;; CHECK-NEXT: (type $A (struct (field (ref $C)))) + ;; NOMNL: (type $A (struct (field (ref $C)))) + (type $A (struct (field (ref $C)))) + ;; CHECK: (type $B (func (param (ref $A)) (result (ref $B)))) + ;; NOMNL: (type $C (struct (field (mut (ref $B))))) - ;; CHECK: (type $B (func (param (ref $A)) (result (ref $B)))) - ;; NOMNL: (type $C (struct_subtype (field (mut (ref $B))) data)) + ;; NOMNL: (type $B (func (param (ref $A)) (result (ref $B)))) + (type $B (func (param (ref $A)) (result (ref $B)))) - ;; NOMNL: (type $B (func_subtype (param (ref $A)) (result (ref $B)) func)) - (type $B (func (param (ref $A)) (result (ref $B)))) - (type $C (struct (field (mut (ref $B))))) - ;; CHECK: (type $D (struct (field (ref $C)) (field (ref $A)))) - ;; NOMNL: (type $D (struct_subtype (field (ref $C)) (field (ref $A)) $A)) - (type $D (struct_subtype (field (ref $C)) (field (ref $A)) $A)) - ;; CHECK: (func $use-types (param $0 (ref $A)) (param $1 (ref $D)) + ;; CHECK: (type $C (struct (field (mut (ref $B))))) + (type $C (struct (field (mut (ref $B))))) + + ;; CHECK: (type $D (struct_subtype (field (ref $C)) (field (ref $A)) $A)) + ;; NOMNL: (type $D (struct_subtype (field (ref $C)) (field (ref $A)) $A)) + (type $D (struct_subtype (field (ref $C)) (field (ref $A)) $A)) + ) + + ;; CHECK: (func $use-types (type $ref|$A|_ref|$D|_=>_none) (param $0 (ref $A)) (param $1 (ref $D)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $use-types (type $ref|$A|_ref|$D|_=>_none) (param $0 (ref $A)) (param $1 (ref $D)) diff --git a/test/lit/passes/roundtrip-gc.wast b/test/lit/passes/roundtrip-gc.wast index 2692b7b99..7a22d7ec3 100644 --- a/test/lit/passes/roundtrip-gc.wast +++ b/test/lit/passes/roundtrip-gc.wast @@ -7,7 +7,7 @@ ;; CHECK: (export "export" (func $test)) ;; NOMNL: (export "export" (func $test)) (export "export" (func $test)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $0 (ref $\7bi32\7d)) ;; CHECK-NEXT: (call $help ;; CHECK-NEXT: (block (result (ref $\7bi32\7d)) @@ -46,7 +46,7 @@ ) ) ) - ;; CHECK: (func $help (param $3 (ref $\7bi32\7d)) (param $4 i32) + ;; CHECK: (func $help (type $ref|$\7bi32\7d|_i32_=>_none) (param $3 (ref $\7bi32\7d)) (param $4 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $help (type $ref|$\7bi32\7d|_i32_=>_none) (param $3 (ref $\7bi32\7d)) (param $4 i32) diff --git a/test/lit/passes/roundtrip.wast b/test/lit/passes/roundtrip.wast index b23819b7b..6b00f2e6d 100644 --- a/test/lit/passes/roundtrip.wast +++ b/test/lit/passes/roundtrip.wast @@ -4,7 +4,7 @@ (module ;; CHECK: (type $none (func)) (type $none (func)) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none) ;; CHECK-NEXT: (local $0 (funcref (ref null $none))) ;; CHECK-NEXT: (local $1 funcref) ;; CHECK-NEXT: (local.set $0 diff --git a/test/lit/passes/rse-eh.wast b/test/lit/passes/rse-eh.wast index 8be0cfa82..f12088d35 100644 --- a/test/lit/passes/rse-eh.wast +++ b/test/lit/passes/rse-eh.wast @@ -7,7 +7,7 @@ ;; CHECK: (tag $e2 (param)) (tag $e2) - ;; CHECK: (func $try1 + ;; CHECK: (func $try1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -35,7 +35,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try2 + ;; CHECK: (func $try2 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -68,7 +68,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try3 + ;; CHECK: (func $try3 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -101,12 +101,12 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo) - ;; CHECK: (func $try4 + ;; CHECK: (func $try4 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -137,7 +137,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try5 + ;; CHECK: (func $try5 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -168,7 +168,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $nested-try1 + ;; CHECK: (func $nested-try1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -216,7 +216,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $nested-try2 + ;; CHECK: (func $nested-try2 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -263,7 +263,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $nested-try3 + ;; CHECK: (func $nested-try3 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -314,7 +314,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $nested-catch1 + ;; CHECK: (func $nested-catch1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -380,7 +380,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $nested-catch2 + ;; CHECK: (func $nested-catch2 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -453,7 +453,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $catchless-try + ;; CHECK: (func $catchless-try (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -482,7 +482,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try-delegate0 + ;; CHECK: (func $try-delegate0 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do @@ -537,7 +537,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try-delegate1 + ;; CHECK: (func $try-delegate1 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do @@ -593,7 +593,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try-delegate2 + ;; CHECK: (func $try-delegate2 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do @@ -653,7 +653,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try-delegate3 + ;; CHECK: (func $try-delegate3 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do @@ -734,7 +734,7 @@ (local.set $x (i32.const 1)) ) - ;; CHECK: (func $try-delegate4 + ;; CHECK: (func $try-delegate4 (type $none_=>_none) ;; CHECK-NEXT: (local $x i32) ;; CHECK-NEXT: (try $l0 ;; CHECK-NEXT: (do diff --git a/test/lit/passes/rse-gc.wast b/test/lit/passes/rse-gc.wast index 71d9baea1..777ddff73 100644 --- a/test/lit/passes/rse-gc.wast +++ b/test/lit/passes/rse-gc.wast @@ -2,16 +2,15 @@ ;; RUN: wasm-opt %s --rse -all -S -o - | filecheck %s (module - ;; CHECK: (type $B (struct (field (ref data)))) - ;; CHECK: (type $A (struct (field dataref))) (type $A (struct_subtype (field (ref null data)) data)) ;; $B is a subtype of $A, and its field has a more refined type (it is non- ;; nullable). + ;; CHECK: (type $B (struct_subtype (field (ref data)) $A)) (type $B (struct_subtype (field (ref data)) $A)) - ;; CHECK: (func $test + ;; CHECK: (func $test (type $none_=>_none) ;; CHECK-NEXT: (local $single (ref func)) ;; CHECK-NEXT: (local $tuple ((ref any) (ref any))) ;; CHECK-NEXT: (nop) @@ -25,7 +24,7 @@ (local $tuple ((ref any) (ref any))) ) - ;; CHECK: (func $needs-refinalize (param $b (ref $B)) (result anyref) + ;; CHECK: (func $needs-refinalize (type $ref|$B|_=>_anyref) (param $b (ref $B)) (result anyref) ;; CHECK-NEXT: (local $a (ref null $A)) ;; CHECK-NEXT: (local.set $a ;; CHECK-NEXT: (local.get $b) @@ -50,7 +49,7 @@ ) ) - ;; CHECK: (func $pick-refined (param $A (ref null $A)) (param $x i32) + ;; CHECK: (func $pick-refined (type $ref?|$A|_i32_=>_none) (param $A (ref null $A)) (param $x i32) ;; CHECK-NEXT: (local $B (ref null $B)) ;; CHECK-NEXT: (local.set $B ;; CHECK-NEXT: (ref.cast_static $B @@ -111,7 +110,7 @@ ) ) - ;; CHECK: (func $pick-refined-nn (param $A (ref $A)) + ;; CHECK: (func $pick-refined-nn (type $ref|$A|_=>_none) (param $A (ref $A)) ;; CHECK-NEXT: (local $B (ref $B)) ;; CHECK-NEXT: (local.set $B ;; CHECK-NEXT: (ref.cast_static $B @@ -142,7 +141,7 @@ ) ) - ;; CHECK: (func $avoid-unrefined (param $A (ref $A)) + ;; CHECK: (func $avoid-unrefined (type $ref|$A|_=>_none) (param $A (ref $A)) ;; CHECK-NEXT: (local $B (ref null $B)) ;; CHECK-NEXT: (local.set $B ;; CHECK-NEXT: (ref.cast_static $B @@ -174,7 +173,7 @@ ) ) - ;; CHECK: (func $pick-refined-earlier (param $A (ref $A)) + ;; CHECK: (func $pick-refined-earlier (type $ref|$A|_=>_none) (param $A (ref $A)) ;; CHECK-NEXT: (local $A2 (ref null $A)) ;; CHECK-NEXT: (local.set $A2 ;; CHECK-NEXT: (local.get $A) @@ -201,7 +200,7 @@ ) ) - ;; CHECK: (func $different-choices (param $non-nullable (ref $A)) + ;; CHECK: (func $different-choices (type $ref|$A|_=>_none) (param $non-nullable (ref $A)) ;; CHECK-NEXT: (local $nullable (ref null $A)) ;; CHECK-NEXT: (local.set $nullable ;; CHECK-NEXT: (local.get $non-nullable) diff --git a/test/lit/passes/signature-pruning.wast b/test/lit/passes/signature-pruning.wast index 4b3cfa0c4..d1bcde7aa 100644 --- a/test/lit/passes/signature-pruning.wast +++ b/test/lit/passes/signature-pruning.wast @@ -2,12 +2,12 @@ ;; RUN: foreach %s %t wasm-opt --nominal --signature-pruning -all -S -o - | filecheck %s (module - ;; CHECK: (type $sig (func_subtype (param i32 f64) func)) + ;; CHECK: (type $sig (func (param i32 f64))) (type $sig (func_subtype (param i32) (param i64) (param f32) (param f64) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -67,12 +67,12 @@ ) (module - ;; CHECK: (type $sig (func_subtype (param i64 f32) func)) + ;; CHECK: (type $sig (func (param i64 f32))) (type $sig (func_subtype (param i32) (param i64) (param f32) (param f64) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -131,12 +131,12 @@ ) (module - ;; CHECK: (type $sig (func_subtype (param i32 i64 f32) func)) + ;; CHECK: (type $sig (func (param i32 i64 f32))) (type $sig (func_subtype (param i32) (param i64) (param f32) (param f64) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -207,12 +207,12 @@ ;; As above, but with the effects on a call_ref. Once more, we can only optimize ;; away the very last param. (module - ;; CHECK: (type $sig (func_subtype (param i32 i64 f32) func)) + ;; CHECK: (type $sig (func (param i32 i64 f32))) (type $sig (func_subtype (param i32) (param i64) (param f32) (param f64) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -277,12 +277,12 @@ ) (module - ;; CHECK: (type $sig (func_subtype func)) + ;; CHECK: (type $sig (func)) (type $sig (func_subtype (param i32) (param i64) (param f32) (param f64) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -323,12 +323,12 @@ ) (module - ;; CHECK: (type $sig (func_subtype func)) + ;; CHECK: (type $sig (func)) (type $sig (func_subtype (param i32) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -369,7 +369,7 @@ ) (module - ;; CHECK: (type $sig (func_subtype func)) + ;; CHECK: (type $sig (func)) (type $sig (func_subtype (param i32) func)) (memory 1 1) @@ -387,7 +387,7 @@ ) (module - ;; CHECK: (type $sig (func_subtype (param i32) func)) + ;; CHECK: (type $sig (func (param i32))) (type $sig (func_subtype (param i32) func)) ;; As above, but now an import also uses this signature, which prevents us @@ -407,7 +407,7 @@ ) (module - ;; CHECK: (type $sig (func_subtype (param i32) func)) + ;; CHECK: (type $sig (func (param i32))) (type $sig (func_subtype (param i32) func)) (memory 1 1) @@ -437,10 +437,10 @@ ) (module - ;; CHECK: (type $sig (func_subtype func)) + ;; CHECK: (type $sig (func)) (type $sig (func_subtype (param i32) func)) - ;; CHECK: (type $sig2 (func_subtype (param i32) func)) + ;; CHECK: (type $sig2 (func (param i32))) (type $sig2 (func_subtype (param i32) func)) (memory 1 1) @@ -471,12 +471,12 @@ ) (module - ;; CHECK: (type $sig (func_subtype func)) + ;; CHECK: (type $sig (func)) (type $sig (func_subtype (param i32) func)) (memory 1 1) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (memory $0 1 1) @@ -547,7 +547,7 @@ ;; The presence of a table prevents us from doing any optimizations. (table 1 1 anyref) - ;; CHECK: (type $sig (func_subtype (param i32) func)) + ;; CHECK: (type $sig (func (param i32))) (type $sig (func_subtype (param i32) func)) ;; CHECK: (table $0 1 1 anyref) @@ -562,10 +562,10 @@ ;; Exports cannot be optimized in any way: we cannot remove parameters from ;; them, and also we cannot apply constant parameter values either. (module - ;; CHECK: (type $sig (func_subtype (param i32) func)) + ;; CHECK: (type $sig (func (param i32))) (type $sig (func_subtype (param i32) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (export "foo" (func $foo)) @@ -600,9 +600,9 @@ ;; *not* have the same type, however: the type should be different nominally ;; even though after the pruning they are identical structurally. (module - ;; CHECK: (type $sig1 (func_subtype func)) + ;; CHECK: (type $sig1 (func)) (type $sig1 (func_subtype (param i32) func)) - ;; CHECK: (type $sig2 (func_subtype func)) + ;; CHECK: (type $sig2 (func)) (type $sig2 (func_subtype (param f64) func)) ;; CHECK: (func $foo1 (type $sig1) @@ -621,9 +621,9 @@ ) (module - ;; CHECK: (type $sig-foo (func_subtype func)) + ;; CHECK: (type $sig-foo (func)) (type $sig-foo (func_subtype (param i32) func)) - ;; CHECK: (type $sig-bar (func_subtype (param i32) func)) + ;; CHECK: (type $sig-bar (func (param i32))) (type $sig-bar (func_subtype (param i32) func)) (memory 1 1) @@ -685,9 +685,9 @@ ;; value that we can optimize in the case of $foo (but not $bar, again, as $bar ;; is not always sent a constant value). (module - ;; CHECK: (type $sig-foo (func_subtype func)) + ;; CHECK: (type $sig-foo (func)) (type $sig-foo (func_subtype (param funcref) func)) - ;; CHECK: (type $sig-bar (func_subtype (param funcref) func)) + ;; CHECK: (type $sig-bar (func (param funcref))) (type $sig-bar (func_subtype (param funcref) func)) (memory 1 1) @@ -738,9 +738,9 @@ ;; As above, but the values are now ref.nulls. All nulls compare equal, so we ;; can still optimize even though the types differ. (module - ;; CHECK: (type $sig-foo (func_subtype func)) + ;; CHECK: (type $sig-foo (func)) (type $sig-foo (func_subtype (param anyref) func)) - ;; CHECK: (type $sig-bar (func_subtype (param anyref) func)) + ;; CHECK: (type $sig-bar (func (param anyref))) (type $sig-bar (func_subtype (param anyref) func)) (memory 1 1) @@ -788,9 +788,9 @@ ) (module - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $A (struct_subtype data)) + ;; CHECK: (type $A (struct )) (type $A (struct_subtype data)) ;; CHECK: (func $0 (type $none_=>_none) ;; CHECK-NEXT: (local $0 f32) @@ -813,11 +813,11 @@ ;; Do not prune signatures used in the call.without.effects intrinsic. (module - ;; CHECK: (type $i32_funcref_=>_i32 (func_subtype (param i32 funcref) (result i32) func)) + ;; CHECK: (type $i32_funcref_=>_i32 (func (param i32 funcref) (result i32))) - ;; CHECK: (type $i32_=>_i32 (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) ;; CHECK: (import "binaryen-intrinsics" "call.without.effects" (func $cwe (param i32 funcref) (result i32))) (import "binaryen-intrinsics" "call.without.effects" (func $cwe (param i32 funcref) (result i32))) diff --git a/test/lit/passes/signature-refining-isorecursive.wast b/test/lit/passes/signature-refining-isorecursive.wast index d1fef1c29..e69c64406 100644 --- a/test/lit/passes/signature-refining-isorecursive.wast +++ b/test/lit/passes/signature-refining-isorecursive.wast @@ -4,7 +4,7 @@ (module ;; The signature should be refined to a single self-referential type. - ;; CHECK: (type $refined (func_subtype (param (ref $refined)) (result (ref $refined)) func)) + ;; CHECK: (type $refined (func (param (ref $refined)) (result (ref $refined)))) (type $refined (func (param (ref $refined)) (result (ref $refined)))) ;; CHECK: (elem declare func $foo) @@ -31,9 +31,9 @@ ;; The signatures should be refined to a pair of mutually self-referential types. ;; CHECK: (rec - ;; CHECK-NEXT: (type $0 (func_subtype (param i32 (ref $0)) (result (ref $1)) func)) + ;; CHECK-NEXT: (type $0 (func (param i32 (ref $0)) (result (ref $1)))) (type $0 (func (param i32 funcref) (result funcref))) - ;; CHECK: (type $1 (func_subtype (param f32 (ref $1)) (result (ref $0)) func)) + ;; CHECK: (type $1 (func (param f32 (ref $1)) (result (ref $0)))) (type $1 (func (param f32 funcref) (result funcref))) @@ -84,9 +84,9 @@ (rec ;; CHECK: (rec - ;; CHECK-NEXT: (type $0 (func_subtype (param (ref $0)) func)) + ;; CHECK-NEXT: (type $0 (func (param (ref $0)))) (type $0 (func (param funcref))) - ;; CHECK: (type $1 (func_subtype (param (ref $0)) func)) + ;; CHECK: (type $1 (func (param (ref $0)))) (type $1 (func (param funcref))) ) @@ -120,14 +120,14 @@ ;; another type that refers to them. ;; CHECK: (rec - ;; CHECK-NEXT: (type $1 (func_subtype (param f32 (ref $1)) (result (ref $0)) func)) + ;; CHECK-NEXT: (type $1 (func (param f32 (ref $1)) (result (ref $0)))) - ;; CHECK: (type $0 (func_subtype (param i32 (ref $0)) (result (ref $1)) func)) + ;; CHECK: (type $0 (func (param i32 (ref $0)) (result (ref $1)))) (type $0 (func (param i32 funcref) (result funcref))) (type $1 (func (param f32 funcref) (result funcref))) - ;; CHECK: (type $2 (func_subtype (param (ref $0)) (result (ref $1)) func)) + ;; CHECK: (type $2 (func (param (ref $0)) (result (ref $1)))) (type $2 (func (param funcref) (result funcref))) diff --git a/test/lit/passes/signature-refining.wast b/test/lit/passes/signature-refining.wast index 8313a75f9..f254a2f63 100644 --- a/test/lit/passes/signature-refining.wast +++ b/test/lit/passes/signature-refining.wast @@ -7,13 +7,13 @@ ;; heap type's definition as well as the types of the parameters as printed ;; on the function (which are derived from the heap type). - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) - ;; CHECK: (type $sig (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $sig (func (param (ref $struct)))) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $sig) (param $x (ref $struct)) ;; CHECK-NEXT: (nop) @@ -36,14 +36,14 @@ (module ;; As above, but the call is via call_ref. - ;; CHECK: (type $sig (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $sig (func (param (ref $struct)))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -72,14 +72,14 @@ ;; call uses a nullable $struct, the other a non-nullable dataref, so the LUB ;; is a nullable dataref. - ;; CHECK: (type $sig (func_subtype (param dataref) func)) + ;; CHECK: (type $sig (func (param dataref))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -120,12 +120,12 @@ ;; Multiple functions with the same heap type. Again, the LUB is in the ;; middle, this time the parent $struct and not a subtype. - ;; CHECK: (type $sig (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $sig (func (param (ref $struct)))) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) ;; CHECK: (type $struct-sub1 (struct_subtype $struct)) (type $struct-sub1 (struct_subtype $struct)) @@ -169,13 +169,13 @@ ;; As above, but now only one of the functions is called. The other is still ;; updated, though, as they share a heap type. - ;; CHECK: (type $sig (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $sig (func (param (ref $struct)))) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func-1 (type $sig) (param $x (ref $struct)) ;; CHECK-NEXT: (nop) @@ -205,13 +205,13 @@ ;; Define a field in the struct of the signature type that will be updated, ;; to check for proper validation after the update. - ;; CHECK: (type $sig (func_subtype (param (ref $struct) (ref $sig)) func)) + ;; CHECK: (type $sig (func (param (ref $struct) (ref $sig)))) (type $sig (func_subtype (param anyref funcref) func)) - ;; CHECK: (type $struct (struct_subtype (field (ref $sig)) data)) + ;; CHECK: (type $struct (struct (field (ref $sig)))) (type $struct (struct_subtype (field (ref $sig)) data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -268,14 +268,14 @@ ;; An unreachable value does not prevent optimization: we will update the ;; param to be $struct. - ;; CHECK: (type $sig (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $sig (func (param (ref $struct)))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -311,10 +311,10 @@ (type $struct (struct_subtype data)) - ;; CHECK: (type $sig (func_subtype (param anyref) func)) + ;; CHECK: (type $sig (func (param anyref))) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func) @@ -344,7 +344,7 @@ (type $struct (struct_subtype data)) - ;; CHECK: (type $sig (func_subtype (param anyref) func)) + ;; CHECK: (type $sig (func (param anyref))) (type $sig (func_subtype (param anyref) func)) ;; CHECK: (func $func (type $sig) (param $x anyref) @@ -356,16 +356,16 @@ (module ;; Test multiple fields in multiple types. - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) - ;; CHECK: (type $sig-2 (func_subtype (param eqref (ref $struct)) func)) + ;; CHECK: (type $sig-2 (func (param eqref (ref $struct)))) - ;; CHECK: (type $sig-1 (func_subtype (param dataref anyref) func)) + ;; CHECK: (type $sig-1 (func (param dataref anyref))) (type $sig-1 (func_subtype (param anyref) (param anyref) func)) (type $sig-2 (func_subtype (param anyref) (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func-2) @@ -431,12 +431,12 @@ (module ;; The presence of a table prevents us from doing any optimizations. - ;; CHECK: (type $sig (func_subtype (param anyref) func)) + ;; CHECK: (type $sig (func (param anyref))) (type $sig (func_subtype (param anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (table 1 1 anyref) @@ -465,14 +465,14 @@ ;; Pass a null in one call to the function. The null can be updated which ;; allows us to refine (but the new type must be nullable). - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) - ;; CHECK: (type $sig (func_subtype (param (ref null $struct)) func)) + ;; CHECK: (type $sig (func (param (ref null $struct)))) (type $sig (func_subtype (param anyref) func)) (type $struct (struct_subtype data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (func $func (type $sig) (param $x (ref null $struct)) ;; CHECK-NEXT: (nop) @@ -499,23 +499,23 @@ ) (module - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) ;; This signature has a single function using it, which returns a more ;; refined type, and we can refine to that. - ;; CHECK: (type $sig-can-refine (func_subtype (result (ref $struct)) func)) + ;; CHECK: (type $sig-can-refine (func (result (ref $struct)))) (type $sig-can-refine (func_subtype (result anyref) func)) ;; Also a single function, but no refinement is possible. - ;; CHECK: (type $sig-cannot-refine (func_subtype (result anyref) func)) + ;; CHECK: (type $sig-cannot-refine (func (result anyref))) (type $sig-cannot-refine (func_subtype (result anyref) func)) ;; The single function never returns, so no refinement is possible. - ;; CHECK: (type $sig-unreachable (func_subtype (result anyref) func)) + ;; CHECK: (type $sig-unreachable (func (result anyref))) (type $sig-unreachable (func_subtype (result anyref) func)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (elem declare func $func-can-refine) @@ -583,9 +583,9 @@ ) (module - ;; CHECK: (type $sig (func_subtype (result (ref null $struct)) func)) + ;; CHECK: (type $sig (func (result (ref null $struct)))) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) ;; This signature has multiple functions using it, and some of them have nulls @@ -635,11 +635,11 @@ ;; Exports prevent optimization, so $func's type will not change here. (module - ;; CHECK: (type $sig (func_subtype (param anyref) func)) + ;; CHECK: (type $sig (func (param anyref))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) (type $sig (func_subtype (param anyref) func)) @@ -665,7 +665,7 @@ ) (module - ;; CHECK: (type $A (func_subtype (param i32) func)) + ;; CHECK: (type $A (func (param i32))) (type $A (func_subtype (param i32) func)) ;; CHECK: (type $B (func_subtype (param i32) $A)) (type $B (func_subtype (param i32) $A)) @@ -683,9 +683,9 @@ ) (module - ;; CHECK: (type $ref|${}|_i32_=>_none (func_subtype (param (ref ${}) i32) func)) + ;; CHECK: (type $ref|${}|_i32_=>_none (func (param (ref ${}) i32))) - ;; CHECK: (type ${} (struct_subtype data)) + ;; CHECK: (type ${} (struct )) (type ${} (struct_subtype data)) ;; CHECK: (func $foo (type $ref|${}|_i32_=>_none) (param $ref (ref ${})) (param $i32 i32) @@ -731,11 +731,11 @@ ;; Do not modify the types used on imported functions (until the spec and VM ;; support becomes stable). (module - ;; CHECK: (type $dataref_=>_none (func_subtype (param dataref) func)) + ;; CHECK: (type $dataref_=>_none (func (param dataref))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $struct (struct_subtype data)) + ;; CHECK: (type $struct (struct )) (type $struct (struct_subtype data)) ;; CHECK: (import "a" "b" (func $import (param dataref))) diff --git a/test/lit/passes/signature-refining_gto.wat b/test/lit/passes/signature-refining_gto.wat index 183ce7d54..5ce8aa576 100644 --- a/test/lit/passes/signature-refining_gto.wat +++ b/test/lit/passes/signature-refining_gto.wat @@ -3,11 +3,11 @@ (module ;; The type $A should not be emitted at all (see below). ;; CHECK-NOT: (type $A - (type $A (struct_subtype (field (mut (ref null $A))) data)) + (type $A (struct (field (mut (ref null $A))))) - ;; CHECK: (type $ref|none|_=>_none (func_subtype (param (ref none)) func)) + ;; CHECK: (type $ref|none|_=>_none (func (param (ref none)))) - ;; CHECK: (type $funcref_i32_=>_none (func_subtype (param funcref i32) func)) + ;; CHECK: (type $funcref_i32_=>_none (func (param funcref i32))) ;; CHECK: (func $struct.get (type $ref|none|_=>_none) (param $0 (ref none)) ;; CHECK-NEXT: (drop diff --git a/test/lit/passes/simplify-locals-eh.wast b/test/lit/passes/simplify-locals-eh.wast index 9eb8680b0..38b9d1af7 100644 --- a/test/lit/passes/simplify-locals-eh.wast +++ b/test/lit/passes/simplify-locals-eh.wast @@ -4,11 +4,11 @@ (module ;; CHECK: (tag $e-i32 (param i32)) (tag $e-i32 (param i32)) - ;; CHECK: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK: (func $foo (type $i32_i32_=>_none) (param $0 i32) (param $1 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo (param i32 i32)) - ;; CHECK: (func $pop-cannot-be-sinked + ;; CHECK: (func $pop-cannot-be-sinked (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -40,7 +40,7 @@ ) ) - ;; CHECK: (func $pop-within-catch-can-be-sinked + ;; CHECK: (func $pop-within-catch-can-be-sinked (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -83,11 +83,11 @@ ) ) - ;; CHECK: (func $bar (result i32) + ;; CHECK: (func $bar (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) (func $bar (result i32) (i32.const 3)) - ;; CHECK: (func $call-cannot-be-sinked-into-try + ;; CHECK: (func $call-cannot-be-sinked-into-try (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (local.set $0 ;; CHECK-NEXT: (call $bar) @@ -121,7 +121,7 @@ ) ) - ;; CHECK: (func $non-call-can-be-sinked-into-try + ;; CHECK: (func $non-call-can-be-sinked-into-try (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (try $try diff --git a/test/lit/passes/simplify-locals-gc-nn.wast b/test/lit/passes/simplify-locals-gc-nn.wast index c7e4b6373..4d536bd1f 100644 --- a/test/lit/passes/simplify-locals-gc-nn.wast +++ b/test/lit/passes/simplify-locals-gc-nn.wast @@ -2,7 +2,7 @@ ;; RUN: wasm-opt %s --simplify-locals -all -S -o - | filecheck %s (module - ;; CHECK: (func $test-nn + ;; CHECK: (func $test-nn (type $none_=>_none) ;; CHECK-NEXT: (local $nn anyref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (try $try @@ -49,7 +49,7 @@ ) ) - ;; CHECK: (func $test-nullable + ;; CHECK: (func $test-nullable (type $none_=>_none) ;; CHECK-NEXT: (local $nullable anyref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (try $try diff --git a/test/lit/passes/simplify-locals-gc-validation.wast b/test/lit/passes/simplify-locals-gc-validation.wast index 0587303c2..f21d30fcb 100644 --- a/test/lit/passes/simplify-locals-gc-validation.wast +++ b/test/lit/passes/simplify-locals-gc-validation.wast @@ -5,7 +5,7 @@ ;; a local.get until the end of the current block. (module - ;; CHECK: (func $test-nn (param $x (ref any)) + ;; CHECK: (func $test-nn (type $ref|any|_=>_none) (param $x (ref any)) ;; CHECK-NEXT: (local $nn anyref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (block $inner diff --git a/test/lit/passes/simplify-locals-gc.wast b/test/lit/passes/simplify-locals-gc.wast index 35f90387d..84e20eecb 100644 --- a/test/lit/passes/simplify-locals-gc.wast +++ b/test/lit/passes/simplify-locals-gc.wast @@ -5,20 +5,20 @@ ;; RUN: | filecheck %s --check-prefix=NOMNL (module - ;; CHECK: (type $B (struct (field (ref data)))) + ;; CHECK: (type $A (struct (field dataref))) + + ;; CHECK: (type $B (struct_subtype (field (ref data)) $A)) ;; CHECK: (type $struct (struct (field (mut i32)))) - ;; NOMNL: (type $A (struct_subtype (field dataref) data)) + ;; NOMNL: (type $A (struct (field dataref))) ;; NOMNL: (type $B (struct_subtype (field (ref data)) $A)) - ;; NOMNL: (type $struct (struct_subtype (field (mut i32)) data)) + ;; NOMNL: (type $struct (struct (field (mut i32)))) (type $struct (struct (field (mut i32)))) - ;; CHECK: (type $A (struct (field dataref))) - ;; CHECK: (type $struct-immutable (struct (field i32))) - ;; NOMNL: (type $struct-immutable (struct_subtype (field i32) data)) + ;; NOMNL: (type $struct-immutable (struct (field i32))) (type $struct-immutable (struct (field i32))) (type $A (struct_subtype (field (ref null data)) data)) @@ -28,7 +28,7 @@ (type $B (struct_subtype (field (ref data)) $A)) ;; Writes to heap objects cannot be reordered with reads. - ;; CHECK: (func $no-reorder-past-write (param $x (ref $struct)) (result i32) + ;; CHECK: (func $no-reorder-past-write (type $ref|$struct|_=>_i32) (param $x (ref $struct)) (result i32) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (struct.get $struct 0 @@ -68,7 +68,7 @@ (local.get $temp) ) - ;; CHECK: (func $reorder-past-write-if-immutable (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32) + ;; CHECK: (func $reorder-past-write-if-immutable (type $ref|$struct|_ref|$struct-immutable|_=>_i32) (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (struct.set $struct 0 @@ -104,7 +104,7 @@ (local.get $temp) ) - ;; CHECK: (func $unreachable-struct.get (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32) + ;; CHECK: (func $unreachable-struct.get (type $ref|$struct|_ref|$struct-immutable|_=>_i32) (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (local.tee $temp ;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit) @@ -154,7 +154,7 @@ (local.get $temp) ) - ;; CHECK: (func $no-block-values-if-br_on + ;; CHECK: (func $no-block-values-if-br_on (type $none_=>_none) ;; CHECK-NEXT: (local $temp anyref) ;; CHECK-NEXT: (block $block ;; CHECK-NEXT: (drop @@ -231,7 +231,7 @@ ) ) - ;; CHECK: (func $if-nnl + ;; CHECK: (func $if-nnl (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.const 1) @@ -298,7 +298,7 @@ ) ) - ;; CHECK: (func $if-nnl-previous-set + ;; CHECK: (func $if-nnl-previous-set (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $if-nnl) @@ -361,7 +361,7 @@ ) ) - ;; CHECK: (func $helper (param $ref (ref func)) + ;; CHECK: (func $helper (type $ref|func|_=>_none) (param $ref (ref func)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $helper (type $ref|func|_=>_none) (param $ref (ref func)) @@ -370,7 +370,7 @@ (func $helper (param $ref (ref func)) ) - ;; CHECK: (func $needs-refinalize (param $b (ref $B)) (result anyref) + ;; CHECK: (func $needs-refinalize (type $ref|$B|_=>_anyref) (param $b (ref $B)) (result anyref) ;; CHECK-NEXT: (local $a (ref null $A)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (struct.get $B 0 @@ -397,7 +397,7 @@ ) ) - ;; CHECK: (func $call-vs-mutable-read (param $0 (ref $struct)) (result i32) + ;; CHECK: (func $call-vs-mutable-read (type $ref|$struct|_=>_i32) (param $0 (ref $struct)) (result i32) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (call $side-effect) @@ -438,7 +438,7 @@ (local.get $temp) ) - ;; CHECK: (func $side-effect (result i32) + ;; CHECK: (func $side-effect (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $side-effect (type $none_=>_i32) (result i32) @@ -449,7 +449,7 @@ (unreachable) ) - ;; CHECK: (func $pick-refined (param $nn-any (ref any)) (result anyref) + ;; CHECK: (func $pick-refined (type $ref|any|_=>_anyref) (param $nn-any (ref any)) (result anyref) ;; CHECK-NEXT: (local $any anyref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (call $use-any @@ -495,7 +495,7 @@ (local.get $any) ) - ;; CHECK: (func $pick-casted (param $any anyref) (result anyref) + ;; CHECK: (func $pick-casted (type $anyref_=>_anyref) (param $any anyref) (result anyref) ;; CHECK-NEXT: (local $nn-any (ref any)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (call $use-any @@ -549,7 +549,7 @@ (local.get $any) ) - ;; CHECK: (func $pick-fallthrough (param $x i32) + ;; CHECK: (func $pick-fallthrough (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $t i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop @@ -593,7 +593,7 @@ ) ) - ;; CHECK: (func $ignore-unrefined (param $A (ref $A)) + ;; CHECK: (func $ignore-unrefined (type $ref|$A|_=>_none) (param $A (ref $A)) ;; CHECK-NEXT: (local $B (ref null $B)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop @@ -683,7 +683,7 @@ ) ) - ;; CHECK: (func $use-nn-any (param $nn-any (ref any)) + ;; CHECK: (func $use-nn-any (type $ref|any|_=>_none) (param $nn-any (ref any)) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $use-nn-any (type $ref|any|_=>_none) (param $nn-any (ref any)) @@ -693,7 +693,7 @@ ;; Helper function for the above. ) - ;; CHECK: (func $use-any (param $any anyref) + ;; CHECK: (func $use-any (type $anyref_=>_none) (param $any anyref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) ;; NOMNL: (func $use-any (type $anyref_=>_none) (param $any anyref) @@ -703,7 +703,7 @@ ;; Helper function for the above. ) - ;; CHECK: (func $remove-tee-refinalize (param $a (ref null $A)) (param $b (ref null $B)) (result dataref) + ;; CHECK: (func $remove-tee-refinalize (type $ref?|$A|_ref?|$B|_=>_dataref) (param $a (ref null $A)) (param $b (ref null $B)) (result dataref) ;; CHECK-NEXT: (struct.get $B 0 ;; CHECK-NEXT: (local.get $b) ;; CHECK-NEXT: ) diff --git a/test/lit/passes/simplify-locals-strings.wast b/test/lit/passes/simplify-locals-strings.wast index 1dd28efa5..176d6fbb8 100644 --- a/test/lit/passes/simplify-locals-strings.wast +++ b/test/lit/passes/simplify-locals-strings.wast @@ -10,7 +10,7 @@ ;; CHECK: (type $array16 (array (mut i16))) (type $array16 (array_subtype (mut i16) data)) - ;; CHECK: (func $no-new-past-store + ;; CHECK: (func $no-new-past-store (type $none_=>_none) ;; CHECK-NEXT: (local $temp stringref) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (string.new_wtf8 utf8 @@ -122,7 +122,7 @@ ) ) - ;; CHECK: (func $yes-new-past-store + ;; CHECK: (func $yes-new-past-store (type $none_=>_none) ;; CHECK-NEXT: (local $temp stringref) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (drop @@ -156,7 +156,7 @@ ) ) - ;; CHECK: (func $no-new-past-store-gc (param $array (ref $array)) (param $array16 (ref $array16)) + ;; CHECK: (func $no-new-past-store-gc (type $ref|$array|_ref|$array16|_=>_none) (param $array (ref $array)) (param $array16 (ref $array16)) ;; CHECK-NEXT: (local $temp stringref) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (string.new_wtf8_array utf8 @@ -284,7 +284,7 @@ ) ) - ;; CHECK: (func $no-load-past-encode (param $ref stringref) + ;; CHECK: (func $no-load-past-encode (type $stringref_=>_none) (param $ref stringref) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (i32.load @@ -376,7 +376,7 @@ ) ) - ;; CHECK: (func $no-load-past-encode-gc (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16)) + ;; CHECK: (func $no-load-past-encode-gc (type $stringref_ref|$array|_ref|$array16|_=>_none) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16)) ;; CHECK-NEXT: (local $temp i32) ;; CHECK-NEXT: (local.set $temp ;; CHECK-NEXT: (array.get_u $array @@ -481,7 +481,7 @@ ) ) - ;; CHECK: (func $no-iteration-past-each-other (param $iter stringview_iter) + ;; CHECK: (func $no-iteration-past-each-other (type $stringview_iter_=>_none) (param $iter stringview_iter) ;; CHECK-NEXT: (local $i32 i32) ;; CHECK-NEXT: (local.set $i32 ;; CHECK-NEXT: (stringview_iter.next diff --git a/test/lit/passes/ssa-gc-nn-locals.wast b/test/lit/passes/ssa-gc-nn-locals.wast index 57cb43118..38cdbabed 100644 --- a/test/lit/passes/ssa-gc-nn-locals.wast +++ b/test/lit/passes/ssa-gc-nn-locals.wast @@ -4,7 +4,7 @@ ;; RUN: wasm-opt %s -all --ssa --enable-gc-nn-locals -g --roundtrip -S -o - | filecheck %s (module - ;; CHECK: (func $nn-locals + ;; CHECK: (func $nn-locals (type $none_=>_none) ;; CHECK-NEXT: (local $x (ref func)) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (ref.func $nn-locals) diff --git a/test/lit/passes/ssa.wast b/test/lit/passes/ssa.wast index 420761e40..ed5b94f7b 100644 --- a/test/lit/passes/ssa.wast +++ b/test/lit/passes/ssa.wast @@ -2,12 +2,12 @@ ;; RUN: wasm-opt %s -all --ssa -S -o - | filecheck %s (module - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $foo) - ;; CHECK: (func $bar (param $x (ref func)) + ;; CHECK: (func $bar (type $ref|func|_=>_none) (param $x (ref func)) ;; CHECK-NEXT: (local $1 (ref func)) ;; CHECK-NEXT: (local $2 (ref func)) ;; CHECK-NEXT: (local.set $1 diff --git a/test/lit/passes/stack-ir-eh.wast b/test/lit/passes/stack-ir-eh.wast index b9e44174d..71064f512 100644 --- a/test/lit/passes/stack-ir-eh.wast +++ b/test/lit/passes/stack-ir-eh.wast @@ -6,7 +6,7 @@ ;; CHECK: (tag $e0 (param i32)) (tag $e0 (param i32)) - ;; CHECK: (func $eh + ;; CHECK: (func $eh (type $none_=>_none) ;; CHECK-NEXT: try $l0 ;; CHECK-NEXT: i32.const 0 ;; CHECK-NEXT: throw $e0 diff --git a/test/lit/passes/stack-ir-roundtrip-eh.wast b/test/lit/passes/stack-ir-roundtrip-eh.wast index 790462cb9..5521e2232 100644 --- a/test/lit/passes/stack-ir-roundtrip-eh.wast +++ b/test/lit/passes/stack-ir-roundtrip-eh.wast @@ -4,7 +4,7 @@ (module ;; CHECK: (tag $tag (param i32)) (tag $tag (param i32)) - ;; CHECK: (func $delegate-child + ;; CHECK: (func $delegate-child (type $none_=>_none) ;; CHECK-NEXT: (try $label$9 ;; CHECK-NEXT: (do ;; CHECK-NEXT: (try $label$7 diff --git a/test/lit/passes/type-refining-isorecursive.wast b/test/lit/passes/type-refining-isorecursive.wast index 9df686154..3ede5146c 100644 --- a/test/lit/passes/type-refining-isorecursive.wast +++ b/test/lit/passes/type-refining-isorecursive.wast @@ -5,14 +5,14 @@ ;; The types should be refined to a set of three mutually recursive types. ;; CHECK: (rec - ;; CHECK-NEXT: (type $0 (struct_subtype (field anyref) (field (ref $1)) data)) + ;; CHECK-NEXT: (type $0 (struct (field anyref) (field (ref $1)))) (type $0 (struct_subtype (ref null any) anyref data)) - ;; CHECK: (type $1 (struct_subtype (field eqref) (field (ref $2)) data)) + ;; CHECK: (type $1 (struct (field eqref) (field (ref $2)))) (type $1 (struct_subtype (ref null eq) anyref data)) - ;; CHECK: (type $2 (struct_subtype (field i31ref) (field (ref $0)) data)) + ;; CHECK: (type $2 (struct (field i31ref) (field (ref $0)))) (type $2 (struct_subtype (ref null i31) anyref data)) - ;; CHECK: (type $ref|$0|_ref|$1|_ref|$2|_=>_none (func_subtype (param (ref $0) (ref $1) (ref $2)) func)) + ;; CHECK: (type $ref|$0|_ref|$1|_ref|$2|_=>_none (func (param (ref $0) (ref $1) (ref $2)))) ;; CHECK: (func $foo (type $ref|$0|_ref|$1|_ref|$2|_=>_none) (param $x (ref $0)) (param $y (ref $1)) (param $z (ref $2)) ;; CHECK-NEXT: (drop @@ -62,17 +62,17 @@ ;; correctly. ;; CHECK: (rec - ;; CHECK-NEXT: (type $all (struct_subtype (field i32) (field (ref $0)) (field (ref $1)) (field (ref $2)) data)) + ;; CHECK-NEXT: (type $all (struct (field i32) (field (ref $0)) (field (ref $1)) (field (ref $2)))) (type $all (struct_subtype i32 anyref anyref anyref data)) - ;; CHECK: (type $0 (struct_subtype (field anyref) (field (ref null $all)) (field (ref $0)) data)) + ;; CHECK: (type $0 (struct (field anyref) (field (ref null $all)) (field (ref $0)))) (type $0 (struct_subtype (ref null any) anyref anyref data)) ;; CHECK: (type $1 (struct_subtype (field eqref) (field (ref null $all)) (field (ref $0)) $0)) (type $1 (struct_subtype (ref null eq) anyref anyref $0)) ;; CHECK: (type $2 (struct_subtype (field i31ref) (field (ref null $all)) (field (ref $0)) $1)) (type $2 (struct_subtype (ref null i31) anyref anyref $1)) - ;; CHECK: (type $ref|$0|_ref|$1|_ref|$2|_=>_none (func_subtype (param (ref $0) (ref $1) (ref $2)) func)) + ;; CHECK: (type $ref|$0|_ref|$1|_ref|$2|_=>_none (func (param (ref $0) (ref $1) (ref $2)))) ;; CHECK: (func $foo (type $ref|$0|_ref|$1|_ref|$2|_=>_none) (param $x (ref $0)) (param $y (ref $1)) (param $z (ref $2)) ;; CHECK-NEXT: (local $all (ref null $all)) diff --git a/test/lit/passes/type-refining.wast b/test/lit/passes/type-refining.wast index f578e3416..082f16bfb 100644 --- a/test/lit/passes/type-refining.wast +++ b/test/lit/passes/type-refining.wast @@ -5,10 +5,10 @@ ;; A struct with three fields. The first will have no writes, the second one ;; write of the same type, and the last a write of a subtype, which will allow ;; us to specialize that one. - ;; CHECK: (type $struct (struct_subtype (field (mut anyref)) (field (mut anyref)) (field (mut (ref i31))) data)) + ;; CHECK: (type $struct (struct (field (mut anyref)) (field (mut anyref)) (field (mut (ref i31))))) (type $struct (struct_subtype (field (mut anyref)) (field (mut anyref)) (field (mut anyref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (struct.set $struct 1 @@ -51,10 +51,10 @@ ;; must keep the type nullable, unlike in the previous module, due to the ;; default value being null. - ;; CHECK: (type $struct (struct_subtype (field (mut i31ref)) data)) + ;; CHECK: (type $struct (struct (field (mut i31ref)))) (type $struct (struct_subtype (field (mut anyref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (drop @@ -84,10 +84,10 @@ ;; that we do so in all three types, not just the parent to which we write ;; (the children have no writes, but must still be updated). - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) - ;; CHECK: (type $ref|$struct|_ref|$child-A|_ref|$child-B|_=>_none (func_subtype (param (ref $struct) (ref $child-A) (ref $child-B)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child-A|_ref|$child-B|_=>_none (func (param (ref $struct) (ref $child-A) (ref $child-B)))) ;; CHECK: (type $child-A (struct_subtype (field (mut (ref $struct))) $struct)) (type $child-A (struct_subtype (field (mut dataref)) $struct)) @@ -121,16 +121,16 @@ ;; As above, but all writes are of $child-A, which allows more optimization ;; up to that type. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $child-A))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $child-A))))) ;; CHECK: (type $child-A (struct_subtype (field (mut (ref $child-A))) $struct)) (type $child-A (struct_subtype (field (mut dataref)) $struct)) (type $struct (struct_subtype (field (mut dataref)) data)) - ;; CHECK: (type $ref|$struct|_ref|$child-A|_=>_none (func_subtype (param (ref $struct) (ref $child-A)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child-A|_=>_none (func (param (ref $struct) (ref $child-A)))) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) ;; CHECK: (type $child-B (struct_subtype (field (mut (ref $child-A))) $struct)) (type $child-B (struct_subtype (field (mut dataref)) $struct)) @@ -173,13 +173,13 @@ ;; child prevents specialization even in the parent and we only improve up to ;; $struct but not to $child. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref $struct))) $struct)) (type $child (struct_subtype (field (mut dataref)) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -206,14 +206,14 @@ (module ;; As above, but both writes are of $child, so we can optimize. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $child))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $child))))) ;; CHECK: (type $child (struct_subtype (field (mut (ref $child))) $struct)) (type $child (struct_subtype (field (mut dataref)) $struct)) (type $struct (struct_subtype (field (mut dataref)) data)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -243,13 +243,13 @@ ;; info, however, we can't make the parent field more specific than the ;; child's. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref $struct))) $struct)) (type $child (struct_subtype (field (mut dataref)) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (drop @@ -287,13 +287,13 @@ ;; imply the fields are mutable, which limits optimization, see the next ;; testcase after this.) - ;; CHECK: (type $struct (struct_subtype (field (ref $struct)) data)) + ;; CHECK: (type $struct (struct (field (ref $struct)))) (type $struct (struct_subtype (field dataref) data)) ;; CHECK: (type $child (struct_subtype (field (ref $child)) $struct)) (type $child (struct_subtype (field dataref) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (drop @@ -326,13 +326,13 @@ ;; different types in this case, and both will become $struct (still an ;; improvement!) - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref $struct))) $struct)) (type $child (struct_subtype (field (mut dataref)) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (drop @@ -365,13 +365,13 @@ ;; that case there is nothing stopping us from specializing that new field ;; to $child. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref $struct))) (field (mut (ref $child))) $struct)) (type $child (struct_subtype (field (mut dataref)) (field (mut dataref)) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $work (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (drop @@ -405,10 +405,10 @@ ;; A copy of a field does not prevent optimization (even though it assigns ;; the old type). - ;; CHECK: (type $struct (struct_subtype (field (mut (ref $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref $struct))))) (type $struct (struct_subtype (field (mut dataref)) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -437,14 +437,14 @@ ) (module - ;; CHECK: (type $X (struct_subtype data)) + ;; CHECK: (type $X (struct )) ;; CHECK: (type $Y (struct_subtype $X)) (type $Y (struct_subtype $X)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $A (struct_subtype (field (ref $Y)) data)) + ;; CHECK: (type $A (struct (field (ref $Y)))) ;; CHECK: (type $C (struct_subtype (field (ref $Y)) $A)) (type $C (struct_subtype (field (ref $X)) $A)) @@ -488,12 +488,12 @@ ;; As above, but remove the struct.new to $B, which means $A, $B, $C all have ;; no writes to them. There are no optimizations to do here. - ;; CHECK: (type $X (struct_subtype data)) + ;; CHECK: (type $X (struct )) (type $X (struct_subtype data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $A (struct_subtype (field (ref $X)) data)) + ;; CHECK: (type $A (struct (field (ref $X)))) ;; CHECK: (type $C (struct_subtype (field (ref $X)) $A)) (type $C (struct_subtype (field (ref $X)) $A)) @@ -521,11 +521,11 @@ ) (module - ;; CHECK: (type $X (struct_subtype data)) + ;; CHECK: (type $X (struct )) (type $X (struct_subtype data)) - ;; CHECK: (type $none_=>_none (func_subtype func)) + ;; CHECK: (type $none_=>_none (func)) - ;; CHECK: (type $A (struct_subtype (field (ref $X)) data)) + ;; CHECK: (type $A (struct (field (ref $X)))) ;; CHECK: (type $B (struct_subtype (field (ref $Y)) $A)) (type $B (struct_subtype (field (ref $Y)) $A)) @@ -559,10 +559,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $update-null (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -593,12 +593,12 @@ ;; As above, but now the null is in a child. The result should be the same: ;; refine the field to nullable $struct. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref null $struct))) $struct)) (type $child (struct_subtype (field (mut (ref null data))) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $update-null (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -625,12 +625,12 @@ (module ;; As above, but now the null is in a parent. The result should be the same. - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref null $struct))) $struct)) (type $child (struct_subtype (field (mut (ref null data))) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $update-null (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (struct.set $struct 0 @@ -655,10 +655,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut dataref)) data)) + ;; CHECK: (type $struct (struct (field (mut dataref)))) (type $struct (struct_subtype (field (mut (ref null data))) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (drop @@ -675,10 +675,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (drop @@ -703,10 +703,10 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) data)) - ;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func)) + ;; CHECK: (type $ref|$struct|_=>_none (func (param (ref $struct)))) ;; CHECK: (func $work (type $ref|$struct|_=>_none) (param $struct (ref $struct)) ;; CHECK-NEXT: (drop @@ -735,13 +735,13 @@ ) (module - ;; CHECK: (type $struct (struct_subtype (field (mut (ref null $child))) (field (mut (ref null $struct))) data)) + ;; CHECK: (type $struct (struct (field (mut (ref null $child))) (field (mut (ref null $struct))))) (type $struct (struct_subtype (field (mut (ref null data))) (field (mut (ref null data))) data)) ;; CHECK: (type $child (struct_subtype (field (mut (ref null $child))) (field (mut (ref null $struct))) $struct)) (type $child (struct_subtype (field (mut (ref null data))) (field (mut (ref null data))) $struct)) - ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func_subtype (param (ref $struct) (ref $child)) func)) + ;; CHECK: (type $ref|$struct|_ref|$child|_=>_none (func (param (ref $struct) (ref $child)))) ;; CHECK: (func $update-null (type $ref|$struct|_ref|$child|_=>_none) (param $struct (ref $struct)) (param $child (ref $child)) ;; CHECK-NEXT: (drop @@ -790,14 +790,14 @@ ;; Root-Outer[Root-Inner] -> Leaf1-Outer[Leaf1-Inner] ;; -> Leaf2-Outer[Leaf2-Inner] - ;; CHECK: (type $Root-Inner (struct_subtype data)) + ;; CHECK: (type $Root-Inner (struct )) ;; CHECK: (type $Leaf2-Inner (struct_subtype $Root-Inner)) (type $Leaf2-Inner (struct_subtype $Root-Inner)) - ;; CHECK: (type $ref?|$Leaf1-Outer|_=>_none (func_subtype (param (ref null $Leaf1-Outer)) func)) + ;; CHECK: (type $ref?|$Leaf1-Outer|_=>_none (func (param (ref null $Leaf1-Outer)))) - ;; CHECK: (type $Root-Outer (struct_subtype (field (ref $Leaf2-Inner)) data)) + ;; CHECK: (type $Root-Outer (struct (field (ref $Leaf2-Inner)))) ;; CHECK: (type $Leaf2-Outer (struct_subtype (field (ref $Leaf2-Inner)) $Root-Outer)) @@ -867,10 +867,10 @@ ) (module - ;; CHECK: (type $A (struct_subtype (field (mut (ref null $A))) data)) + ;; CHECK: (type $A (struct (field (mut (ref null $A))))) (type $A (struct_subtype (field (mut (ref null $A))) data)) - ;; CHECK: (type $ref|$A|_ref?|$A|_=>_none (func_subtype (param (ref $A) (ref null $A)) func)) + ;; CHECK: (type $ref|$A|_ref?|$A|_=>_none (func (param (ref $A) (ref null $A)))) ;; CHECK: (func $non-nullability (type $ref|$A|_ref?|$A|_=>_none) (param $nn (ref $A)) (param $A (ref null $A)) ;; CHECK-NEXT: (local $temp (ref null $A)) @@ -930,12 +930,12 @@ ) (module - ;; CHECK: (type $A (struct_subtype (field (ref null $A)) data)) + ;; CHECK: (type $A (struct (field (ref null $A)))) (type $A (struct_subtype (field (ref null $A)) data)) ;; CHECK: (type $B (struct_subtype (field (ref null $B)) $A)) (type $B (struct_subtype (field (ref null $A)) $A)) - ;; CHECK: (type $ref?|$B|_ref?|$A|_=>_none (func_subtype (param (ref null $B) (ref null $A)) func)) + ;; CHECK: (type $ref?|$B|_ref?|$A|_=>_none (func (param (ref null $B) (ref null $A)))) ;; CHECK: (func $heap-type (type $ref?|$B|_ref?|$A|_=>_none) (param $b (ref null $B)) (param $A (ref null $A)) ;; CHECK-NEXT: (local $a (ref null $A)) @@ -980,10 +980,10 @@ ) (module - ;; CHECK: (type $A (struct_subtype (field (mut (ref $A))) data)) + ;; CHECK: (type $A (struct (field (mut (ref $A))))) (type $A (struct_subtype (field (mut (ref null $A))) data)) - ;; CHECK: (type $ref|$A|_ref?|$A|_=>_none (func_subtype (param (ref $A) (ref null $A)) func)) + ;; CHECK: (type $ref|$A|_ref?|$A|_=>_none (func (param (ref $A) (ref null $A)))) ;; CHECK: (func $non-nullability-block (type $ref|$A|_ref?|$A|_=>_none) (param $nn (ref $A)) (param $A (ref null $A)) ;; CHECK-NEXT: (struct.set $A 0 diff --git a/test/lit/passes/vacuum-eh.wast b/test/lit/passes/vacuum-eh.wast index 5a6a4b20b..0030d928c 100644 --- a/test/lit/passes/vacuum-eh.wast +++ b/test/lit/passes/vacuum-eh.wast @@ -7,7 +7,7 @@ ;; CHECK: (tag $e2 (param i32)) (tag $e2 (param i32)) - ;; CHECK: (func $try-test + ;; CHECK: (func $try-test (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $try-test @@ -22,7 +22,7 @@ ) ) - ;; CHECK: (func $inner-try-catch_all-test (result i32) + ;; CHECK: (func $inner-try-catch_all-test (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try0 ;; CHECK-NEXT: (do @@ -60,7 +60,7 @@ (i32.const 2) ) - ;; CHECK: (func $inner-try-catch-test + ;; CHECK: (func $inner-try-catch-test (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try ;; CHECK-NEXT: (do @@ -108,7 +108,7 @@ ) ) - ;; CHECK: (func $br-in-catch + ;; CHECK: (func $br-in-catch (type $none_=>_none) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $br-in-catch @@ -128,7 +128,7 @@ ) ) - ;; CHECK: (func $try-delegate-outer-target + ;; CHECK: (func $try-delegate-outer-target (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $label$0 ;; CHECK-NEXT: (do @@ -179,7 +179,7 @@ ) ) - ;; CHECK: (func $trivial-catch-all-of-throw + ;; CHECK: (func $trivial-catch-all-of-throw (type $none_=>_none) ;; CHECK-NEXT: (local $0 i32) ;; CHECK-NEXT: (try $try3 ;; CHECK-NEXT: (do diff --git a/test/lit/passes/vacuum-func.wast b/test/lit/passes/vacuum-func.wast index fb400b7d1..ba16a1a83 100644 --- a/test/lit/passes/vacuum-func.wast +++ b/test/lit/passes/vacuum-func.wast @@ -5,7 +5,7 @@ ;; effects like a return or changes to locals. (module - ;; CHECK: (func $optimizable (param $x i32) + ;; CHECK: (func $optimizable (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $y i32) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) @@ -26,7 +26,7 @@ (return) ) - ;; CHECK: (func $result (param $x i32) (result i32) + ;; CHECK: (func $result (type $i32_=>_i32) (param $x i32) (result i32) ;; CHECK-NEXT: (local $y i32) ;; CHECK-NEXT: (local.set $x ;; CHECK-NEXT: (i32.const 1) @@ -55,7 +55,7 @@ ) ) - ;; CHECK: (func $partial (param $x i32) + ;; CHECK: (func $partial (type $i32_=>_none) (param $x i32) ;; CHECK-NEXT: (local $y i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.get $x) diff --git a/test/lit/passes/vacuum-gc.wast b/test/lit/passes/vacuum-gc.wast index 8ec273332..f84988f46 100644 --- a/test/lit/passes/vacuum-gc.wast +++ b/test/lit/passes/vacuum-gc.wast @@ -4,7 +4,7 @@ (module (type ${} (struct)) - ;; CHECK: (func $drop-ref-as (param $x anyref) + ;; CHECK: (func $drop-ref-as (type $anyref_=>_none) (param $x anyref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.as_non_null ;; CHECK-NEXT: (local.get $x) @@ -51,7 +51,7 @@ ) ) - ;; CHECK: (func $vacuum-nonnull + ;; CHECK: (func $vacuum-nonnull (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $vacuum-nonnull @@ -72,7 +72,7 @@ ) ) - ;; CHECK: (func $drop-i31.get (param $ref i31ref) (param $ref-nn (ref i31)) + ;; CHECK: (func $drop-i31.get (type $i31ref_ref|i31|_=>_none) (param $ref i31ref) (param $ref-nn (ref i31)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i31.get_s ;; CHECK-NEXT: (local.get $ref) diff --git a/test/lit/passes/vacuum-intrinsics.wast b/test/lit/passes/vacuum-intrinsics.wast index 263c07c15..9d9a25d01 100644 --- a/test/lit/passes/vacuum-intrinsics.wast +++ b/test/lit/passes/vacuum-intrinsics.wast @@ -11,7 +11,7 @@ ;; CHECK: (import "binaryen-intrinsics" "call.without.effects" (func $call.without.effects-ref (param funcref) (result (ref any)))) (import "binaryen-intrinsics" "call.without.effects" (func $call.without.effects-ref (param funcref) (result (ref any)))) - ;; CHECK: (func $used (result i32) + ;; CHECK: (func $used (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (local $i32 i32) ;; CHECK-NEXT: (local.set $i32 ;; CHECK-NEXT: (call $call.without.effects @@ -29,7 +29,7 @@ (local.get $i32) ) - ;; CHECK: (func $unused + ;; CHECK: (func $unused (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $unused @@ -39,7 +39,7 @@ ) ) - ;; CHECK: (func $unused-fj + ;; CHECK: (func $unused-fj (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $unused-fj @@ -49,7 +49,7 @@ ) ) - ;; CHECK: (func $unused-fj-side-effects (result f32) + ;; CHECK: (func $unused-fj-side-effects (type $none_=>_f32) (result f32) ;; CHECK-NEXT: (local $f32 f32) ;; CHECK-NEXT: (local.set $f32 ;; CHECK-NEXT: (f32.const 2.718280076980591) @@ -71,7 +71,7 @@ (local.get $f32) ) - ;; CHECK: (func $unused-unreachable + ;; CHECK: (func $unused-unreachable (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $call.without.effects-fj ;; CHECK-NEXT: (unreachable) @@ -87,7 +87,7 @@ ) ) - ;; CHECK: (func $used-fallthrough + ;; CHECK: (func $used-fallthrough (type $none_=>_none) ;; CHECK-NEXT: (local $i32 i32) ;; CHECK-NEXT: (local.set $i32 ;; CHECK-NEXT: (if (result i32) @@ -136,7 +136,7 @@ ) ) - ;; CHECK: (func $unused-fallthrough + ;; CHECK: (func $unused-fallthrough (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (block $condition (result i32) @@ -177,7 +177,7 @@ ) ) - ;; CHECK: (func $unused-fallthrough-bad-type + ;; CHECK: (func $unused-fallthrough-bad-type (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (if (result (ref any)) ;; CHECK-NEXT: (call $i) @@ -202,7 +202,7 @@ ) ) - ;; CHECK: (func $i (result i32) + ;; CHECK: (func $i (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $i (result i32) @@ -210,7 +210,7 @@ (unreachable) ) - ;; CHECK: (func $fj (param $0 f32) (result i64) + ;; CHECK: (func $fj (type $f32_=>_i64) (param $0 f32) (result i64) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $fj (param f32) (result i64) @@ -218,7 +218,7 @@ (unreachable) ) - ;; CHECK: (func $ref (result (ref any)) + ;; CHECK: (func $ref (type $none_=>_ref|any|) (result (ref any)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $ref (result (ref any)) @@ -227,7 +227,7 @@ ) - ;; CHECK: (func $nop + ;; CHECK: (func $nop (type $none_=>_none) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) (func $nop diff --git a/test/lit/passes/vacuum-tnh.wast b/test/lit/passes/vacuum-tnh.wast index 37aecc5f6..c1e8c2059 100644 --- a/test/lit/passes/vacuum-tnh.wast +++ b/test/lit/passes/vacuum-tnh.wast @@ -12,10 +12,10 @@ ;; NO_TNH: (type $struct (struct (field (mut i32)))) (type $struct (struct (field (mut i32)))) - ;; YESTNH: (func $drop (param $x i32) (param $y anyref) + ;; YESTNH: (func $drop (type $i32_anyref_=>_none) (param $x i32) (param $y anyref) ;; YESTNH-NEXT: (nop) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $drop (param $x i32) (param $y anyref) + ;; NO_TNH: (func $drop (type $i32_anyref_=>_none) (param $x i32) (param $y anyref) ;; NO_TNH-NEXT: (drop ;; NO_TNH-NEXT: (i32.load ;; NO_TNH-NEXT: (local.get $x) @@ -83,7 +83,7 @@ ) ;; Other side effects prevent us making any changes. - ;; YESTNH: (func $other-side-effects (param $x i32) (result i32) + ;; YESTNH: (func $other-side-effects (type $i32_=>_i32) (param $x i32) (result i32) ;; YESTNH-NEXT: (drop ;; YESTNH-NEXT: (call $other-side-effects ;; YESTNH-NEXT: (i32.const 1) @@ -94,7 +94,7 @@ ;; YESTNH-NEXT: ) ;; YESTNH-NEXT: (i32.const 1) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $other-side-effects (param $x i32) (result i32) + ;; NO_TNH: (func $other-side-effects (type $i32_=>_i32) (param $x i32) (result i32) ;; NO_TNH-NEXT: (drop ;; NO_TNH-NEXT: (call $other-side-effects ;; NO_TNH-NEXT: (i32.const 1) @@ -131,15 +131,15 @@ ) ;; A helper function for the above, that returns nothing. - ;; YESTNH: (func $return-nothing + ;; YESTNH: (func $return-nothing (type $none_=>_none) ;; YESTNH-NEXT: (nop) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $return-nothing + ;; NO_TNH: (func $return-nothing (type $none_=>_none) ;; NO_TNH-NEXT: (nop) ;; NO_TNH-NEXT: ) (func $return-nothing) - ;; YESTNH: (func $partial (param $x (ref $struct)) (result (ref null $struct)) + ;; YESTNH: (func $partial (type $ref|$struct|_=>_ref?|$struct|) (param $x (ref $struct)) (result (ref null $struct)) ;; YESTNH-NEXT: (local $y (ref null $struct)) ;; YESTNH-NEXT: (local.set $y ;; YESTNH-NEXT: (local.get $x) @@ -149,7 +149,7 @@ ;; YESTNH-NEXT: ) ;; YESTNH-NEXT: (local.get $y) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $partial (param $x (ref $struct)) (result (ref null $struct)) + ;; NO_TNH: (func $partial (type $ref|$struct|_=>_ref?|$struct|) (param $x (ref $struct)) (result (ref null $struct)) ;; NO_TNH-NEXT: (local $y (ref null $struct)) ;; NO_TNH-NEXT: (drop ;; NO_TNH-NEXT: (struct.get $struct 0 @@ -193,10 +193,10 @@ (local.get $y) ) - ;; YESTNH: (func $toplevel + ;; YESTNH: (func $toplevel (type $none_=>_none) ;; YESTNH-NEXT: (nop) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $toplevel + ;; NO_TNH: (func $toplevel (type $none_=>_none) ;; NO_TNH-NEXT: (unreachable) ;; NO_TNH-NEXT: ) (func $toplevel @@ -205,10 +205,10 @@ (unreachable) ) - ;; YESTNH: (func $drop-loop + ;; YESTNH: (func $drop-loop (type $none_=>_none) ;; YESTNH-NEXT: (nop) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $drop-loop + ;; NO_TNH: (func $drop-loop (type $none_=>_none) ;; NO_TNH-NEXT: (drop ;; NO_TNH-NEXT: (loop $loop (result i32) ;; NO_TNH-NEXT: (br_if $loop @@ -231,7 +231,7 @@ ) ) - ;; YESTNH: (func $loop-effects + ;; YESTNH: (func $loop-effects (type $none_=>_none) ;; YESTNH-NEXT: (drop ;; YESTNH-NEXT: (loop $loop (result i32) ;; YESTNH-NEXT: (drop @@ -246,7 +246,7 @@ ;; YESTNH-NEXT: ) ;; YESTNH-NEXT: ) ;; YESTNH-NEXT: ) - ;; NO_TNH: (func $loop-effects + ;; NO_TNH: (func $loop-effects (type $none_=>_none) ;; NO_TNH-NEXT: (drop ;; NO_TNH-NEXT: (loop $loop (result i32) ;; NO_TNH-NEXT: (drop diff --git a/test/lit/recursive-type-sort.wast b/test/lit/recursive-type-sort.wast index 40ae14dfd..3b241fd96 100644 --- a/test/lit/recursive-type-sort.wast +++ b/test/lit/recursive-type-sort.wast @@ -2,7 +2,7 @@ ;; Regression test for a bug in TypeComparator that made it fail to properly ;; implement the C++ Compare requirements. See #3648. -;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s +;; RUN: wasm-opt %s -all --roundtrip --structural -S -o - | filecheck %s ;; RUN: wasm-opt %s -all --roundtrip --nominal -S -o - | filecheck %s ;; Check that there's no crash. diff --git a/test/lit/recursive-types.wast b/test/lit/recursive-types.wast index ced89612d..30fd13db9 100644 --- a/test/lit/recursive-types.wast +++ b/test/lit/recursive-types.wast @@ -7,40 +7,49 @@ (type (func (param (ref null 0)) (result (ref null 0)))) (type (func (param (ref null 1)) (result (ref null 1)))) (type (func (param (ref null 0)) (result (ref null 1)))) - (type (func (param (ref null 3)) (result (ref null 4)))) - (type (func (param (ref null 4)) (result (ref null 3)))) + (rec + (type (func (param (ref null 3)) (result (ref null 4)))) + (type (func (param (ref null 4)) (result (ref null 3)))) + ) ;; CHECK: (type $type$0 (func (param (ref null $type$0)) (result (ref null $type$0)))) - ;; CHECK: (func $foo (param $0 (ref null $type$0)) (result (ref null $type$0)) + ;; CHECK: (rec + ;; CHECK-NEXT: (type $type$2 (func (param (ref null $type$2)) (result (ref null $type$3)))) + + ;; CHECK: (type $type$3 (func (param (ref null $type$3)) (result (ref null $type$2)))) + + ;; CHECK: (type $type$1 (func (param (ref null $type$0)) (result (ref null $type$0)))) + + ;; CHECK: (func $foo (type $type$0) (param $0 (ref null $type$0)) (result (ref null $type$0)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $foo (type 0) (unreachable) ) - ;; CHECK: (func $bar (param $0 (ref null $type$0)) (result (ref null $type$0)) + ;; CHECK: (func $bar (type $type$0) (param $0 (ref null $type$0)) (result (ref null $type$0)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $bar (type 1) (unreachable) ) - ;; CHECK: (func $baz (param $0 (ref null $type$0)) (result (ref null $type$0)) + ;; CHECK: (func $baz (type $type$1) (param $0 (ref null $type$0)) (result (ref null $type$0)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $baz (type 2) (unreachable) ) - ;; CHECK: (func $qux (param $0 (ref null $type$0)) (result (ref null $type$0)) + ;; CHECK: (func $qux (type $type$2) (param $0 (ref null $type$2)) (result (ref null $type$3)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $qux (type 3) (unreachable) ) - ;; CHECK: (func $quux (param $0 (ref null $type$0)) (result (ref null $type$0)) + ;; CHECK: (func $quux (type $type$3) (param $0 (ref null $type$3)) (result (ref null $type$2)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $quux (type 4) diff --git a/test/lit/ref-cast-nop.wast b/test/lit/ref-cast-nop.wast index 6e49508d5..51df10947 100644 --- a/test/lit/ref-cast-nop.wast +++ b/test/lit/ref-cast-nop.wast @@ -5,7 +5,7 @@ (module ;; CHECK: (type $struct (struct (field i32))) (type $struct (struct i32)) - ;; CHECK: (func $ref.cast_nop_static (param $x (ref any)) (result (ref $struct)) + ;; CHECK: (func $ref.cast_nop_static (type $ref|any|_=>_ref|$struct|) (param $x (ref any)) (result (ref $struct)) ;; CHECK-NEXT: (ref.cast_nop_static $struct ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) diff --git a/test/lit/relaxed-simd.wast b/test/lit/relaxed-simd.wast index 772ff2065..17f11761e 100644 --- a/test/lit/relaxed-simd.wast +++ b/test/lit/relaxed-simd.wast @@ -19,7 +19,7 @@ ;; CHECK-BINARY: (memory $0 1 1) - ;; CHECK-BINARY: (func $i8x16.relaxed_swizzle (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $i8x16.relaxed_swizzle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (i8x16.relaxed_swizzle ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) @@ -33,7 +33,7 @@ ;; CHECK-TEXT: (memory $0 1 1) - ;; CHECK-TEXT: (func $i8x16.relaxed_swizzle (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $i8x16.relaxed_swizzle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (i8x16.relaxed_swizzle ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -46,12 +46,12 @@ ) ) - ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_s (param $0 v128) (result v128) + ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f32x4_s ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_s (param $0 v128) (result v128) + ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f32x4_s ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: ) @@ -61,12 +61,12 @@ (local.get $0) ) ) - ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_u (param $0 v128) (result v128) + ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f32x4_u ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_u (param $0 v128) (result v128) + ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f32x4_u ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: ) @@ -76,12 +76,12 @@ (local.get $0) ) ) - ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_s_zero (param $0 v128) (result v128) + ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_s_zero (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_s_zero (param $0 v128) (result v128) + ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_s_zero (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: ) @@ -91,12 +91,12 @@ (local.get $0) ) ) - ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_u_zero (param $0 v128) (result v128) + ;; CHECK-BINARY: (func $i32x4.relaxed_trunc_f64x2_u_zero (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_u_zero (param $0 v128) (result v128) + ;; CHECK-TEXT: (func $i32x4.relaxed_trunc_f64x2_u_zero (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: ) @@ -107,14 +107,14 @@ ) ) - ;; CHECK-BINARY: (func $f32x4.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $f32x4.relaxed_fma (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (f32x4.relaxed_fma ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f32x4.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $f32x4.relaxed_fma (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (f32x4.relaxed_fma ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -128,14 +128,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $f32x4.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $f32x4.relaxed_fms (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (f32x4.relaxed_fms ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f32x4.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $f32x4.relaxed_fms (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (f32x4.relaxed_fms ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -149,14 +149,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $f64x2.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $f64x2.relaxed_fma (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (f64x2.relaxed_fma ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f64x2.relaxed_fma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $f64x2.relaxed_fma (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (f64x2.relaxed_fma ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -170,14 +170,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $f64x2.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $f64x2.relaxed_fms (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (f64x2.relaxed_fms ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f64x2.relaxed_fms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $f64x2.relaxed_fms (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (f64x2.relaxed_fms ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -192,14 +192,14 @@ ) ) - ;; CHECK-BINARY: (func $i8x16.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $i8x16.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (i8x16.laneselect ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i8x16.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $i8x16.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (i8x16.laneselect ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -213,14 +213,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $i16x8.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $i16x8.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (i16x8.laneselect ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i16x8.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $i16x8.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (i16x8.laneselect ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -234,14 +234,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $i32x4.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $i32x4.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.laneselect ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i32x4.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $i32x4.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.laneselect ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -255,14 +255,14 @@ (local.get $2) ) ) - ;; CHECK-BINARY: (func $i64x2.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-BINARY: (func $i64x2.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (i64x2.laneselect ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i64x2.laneselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + ;; CHECK-TEXT: (func $i64x2.laneselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (i64x2.laneselect ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -277,13 +277,13 @@ ) ) - ;; CHECK-BINARY: (func $f32x4.relaxed_min (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $f32x4.relaxed_min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (f32x4.relaxed_min ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f32x4.relaxed_min (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $f32x4.relaxed_min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (f32x4.relaxed_min ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -295,13 +295,13 @@ (local.get $1) ) ) - ;; CHECK-BINARY: (func $f32x4.relaxed_max (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $f32x4.relaxed_max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (f32x4.relaxed_max ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f32x4.relaxed_max (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $f32x4.relaxed_max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (f32x4.relaxed_max ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -313,13 +313,13 @@ (local.get $1) ) ) - ;; CHECK-BINARY: (func $f64x2.relaxed_min (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $f64x2.relaxed_min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (f64x2.relaxed_min ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f64x2.relaxed_min (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $f64x2.relaxed_min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (f64x2.relaxed_min ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -331,13 +331,13 @@ (local.get $1) ) ) - ;; CHECK-BINARY: (func $f64x2.relaxed_max (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $f64x2.relaxed_max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (f64x2.relaxed_max ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $f64x2.relaxed_max (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $f64x2.relaxed_max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (f64x2.relaxed_max ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -350,13 +350,13 @@ ) ) - ;; CHECK-BINARY: (func $i16x8.relaxed_q15mulr_s (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $i16x8.relaxed_q15mulr_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (i16x8.relaxed_q15mulr_s ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i16x8.relaxed_q15mulr_s (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $i16x8.relaxed_q15mulr_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (i16x8.relaxed_q15mulr_s ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -369,13 +369,13 @@ ) ) - ;; CHECK-BINARY: (func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-BINARY: (func $i16x8.dot_i8x16_i7x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-BINARY-NEXT: (i16x8.dot_i8x16_i7x16_s ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $i16x8.dot_i8x16_i7x16_s (param $0 v128) (param $1 v128) (result v128) + ;; CHECK-TEXT: (func $i16x8.dot_i8x16_i7x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-TEXT-NEXT: (i16x8.dot_i8x16_i7x16_s ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -388,14 +388,14 @@ ) ) -;; CHECK-BINARY: (func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-BINARY: (func $i32x4.dot_i8x16_i7x16_add_s (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-BINARY-NEXT: (i32x4.dot_i8x16_i7x16_add_s ;; CHECK-BINARY-NEXT: (local.get $0) ;; CHECK-BINARY-NEXT: (local.get $1) ;; CHECK-BINARY-NEXT: (local.get $2) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) -;; CHECK-TEXT: (func $i32x4.dot_i8x16_i7x16_add_s (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-TEXT: (func $i32x4.dot_i8x16_i7x16_add_s (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-TEXT-NEXT: (i32x4.dot_i8x16_i7x16_add_s ;; CHECK-TEXT-NEXT: (local.get $0) ;; CHECK-TEXT-NEXT: (local.get $1) @@ -419,38 +419,38 @@ ;; CHECK-NODEBUG: (memory $0 1 1) -;; CHECK-NODEBUG: (func $0 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $0 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i8x16.relaxed_swizzle ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $1 (param $0 v128) (result v128) +;; CHECK-NODEBUG: (func $1 (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_s ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $2 (param $0 v128) (result v128) +;; CHECK-NODEBUG: (func $2 (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f32x4_u ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $3 (param $0 v128) (result v128) +;; CHECK-NODEBUG: (func $3 (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_s_zero ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $4 (param $0 v128) (result v128) +;; CHECK-NODEBUG: (func $4 (type $v128_=>_v128) (param $0 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.relaxed_trunc_f64x2_u_zero ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $5 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $5 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_fma ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -458,7 +458,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $6 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $6 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_fms ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -466,7 +466,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $7 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $7 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_fma ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -474,7 +474,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $8 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $8 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_fms ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -482,7 +482,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $9 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $9 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i8x16.laneselect ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -490,7 +490,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $10 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $10 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i16x8.laneselect ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -498,7 +498,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $11 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $11 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.laneselect ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -506,7 +506,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $12 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $12 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i64x2.laneselect ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) @@ -514,49 +514,49 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $13 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $13 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_min ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $14 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $14 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f32x4.relaxed_max ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $15 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $15 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_min ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $16 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $16 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (f64x2.relaxed_max ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $17 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $17 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i16x8.relaxed_q15mulr_s ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $18 (param $0 v128) (param $1 v128) (result v128) +;; CHECK-NODEBUG: (func $18 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i16x8.dot_i8x16_i7x16_s ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $19 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) +;; CHECK-NODEBUG: (func $19 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) ;; CHECK-NODEBUG-NEXT: (i32x4.dot_i8x16_i7x16_add_s ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: (local.get $1) diff --git a/test/lit/strings.wast b/test/lit/strings.wast index 6b55f2863..f0b4730d7 100644 --- a/test/lit/strings.wast +++ b/test/lit/strings.wast @@ -40,7 +40,7 @@ ;; CHECK: (memory $0 10 10) - ;; CHECK: (func $string.new (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) (param $e stringref) (param $f stringview_wtf8) (param $g stringview_wtf16) (param $h stringview_iter) (param $i (ref string)) (param $j (ref stringview_wtf8)) (param $k (ref stringview_wtf16)) (param $l (ref stringview_iter)) + ;; CHECK: (func $string.new (type $stringref_stringview_wtf8_stringview_wtf16_stringview_iter_stringref_stringview_wtf8_stringview_wtf16_stringview_iter_ref|string|_ref|stringview_wtf8|_ref|stringview_wtf16|_ref|stringview_iter|_=>_none) (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) (param $e stringref) (param $f stringview_wtf8) (param $g stringview_wtf16) (param $h stringview_iter) (param $i (ref string)) (param $j (ref stringview_wtf8)) (param $k (ref stringview_wtf16)) (param $l (ref stringview_iter)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (string.new_wtf8 utf8 ;; CHECK-NEXT: (i32.const 1) @@ -105,7 +105,7 @@ ) ) - ;; CHECK: (func $string.const + ;; CHECK: (func $string.const (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (string.const "foo") ;; CHECK-NEXT: ) @@ -128,7 +128,7 @@ ) ) - ;; CHECK: (func $string.measure (param $ref stringref) + ;; CHECK: (func $string.measure (type $stringref_=>_none) (param $ref stringref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (string.measure_wtf8 wtf8 @@ -167,7 +167,7 @@ ) ) - ;; CHECK: (func $string.encode (param $ref stringref) + ;; CHECK: (func $string.encode (type $stringref_=>_none) (param $ref stringref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (string.encode_wtf8 wtf8 @@ -212,7 +212,7 @@ ) ) - ;; CHECK: (func $string.concat (param $a stringref) (param $b stringref) + ;; CHECK: (func $string.concat (type $stringref_stringref_=>_none) (param $a stringref) (param $b stringref) ;; CHECK-NEXT: (local.set $a ;; CHECK-NEXT: (string.concat ;; CHECK-NEXT: (local.get $a) @@ -229,7 +229,7 @@ ) ) - ;; CHECK: (func $string.eq (param $a stringref) (param $b stringref) + ;; CHECK: (func $string.eq (type $stringref_stringref_=>_none) (param $a stringref) (param $b stringref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (string.eq @@ -250,7 +250,7 @@ ) ) - ;; CHECK: (func $string.is_usv_sequence (param $ref stringref) + ;; CHECK: (func $string.is_usv_sequence (type $stringref_=>_none) (param $ref stringref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (string.is_usv_sequence @@ -269,7 +269,7 @@ ) ) - ;; CHECK: (func $string.as (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) + ;; CHECK: (func $string.as (type $stringref_stringview_wtf8_stringview_wtf16_stringview_iter_=>_none) (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) ;; CHECK-NEXT: (local.set $b ;; CHECK-NEXT: (string.as_wtf8 ;; CHECK-NEXT: (local.get $a) @@ -308,7 +308,7 @@ ) ) - ;; CHECK: (func $stringview-access (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) + ;; CHECK: (func $stringview-access (type $stringref_stringview_wtf8_stringview_wtf16_stringview_iter_=>_none) (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) ;; CHECK-NEXT: (local $i32 i32) ;; CHECK-NEXT: (local.set $i32 ;; CHECK-NEXT: (stringview_wtf8.advance @@ -378,7 +378,7 @@ ) ) ) - ;; CHECK: (func $stringview-slice (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) + ;; CHECK: (func $stringview-slice (type $stringref_stringview_wtf8_stringview_wtf16_stringview_iter_=>_none) (param $a stringref) (param $b stringview_wtf8) (param $c stringview_wtf16) (param $d stringview_iter) ;; CHECK-NEXT: (local.set $a ;; CHECK-NEXT: (stringview_wtf8.slice ;; CHECK-NEXT: (local.get $b) @@ -427,7 +427,7 @@ ) ) - ;; CHECK: (func $string.length (param $ref stringview_wtf16) + ;; CHECK: (func $string.length (type $stringview_wtf16_=>_none) (param $ref stringview_wtf16) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (stringview_wtf16.length @@ -446,7 +446,7 @@ ) ) - ;; CHECK: (func $string.new.gc (param $array (ref $array)) (param $array16 (ref $array16)) + ;; CHECK: (func $string.new.gc (type $ref|$array|_ref|$array16|_=>_none) (param $array (ref $array)) (param $array16 (ref $array16)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (string.new_wtf8_array utf8 ;; CHECK-NEXT: (local.get $array) @@ -507,7 +507,7 @@ ) ) - ;; CHECK: (func $string.encode.gc (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16)) + ;; CHECK: (func $string.encode.gc (type $stringref_ref|$array|_ref|$array16|_=>_none) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16)) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (string.encode_wtf8_array wtf8 diff --git a/test/lit/structref.wast b/test/lit/structref.wast index 5e674eb26..f4f2fb281 100644 --- a/test/lit/structref.wast +++ b/test/lit/structref.wast @@ -4,7 +4,7 @@ ;; Check that `struct` is correctly parsed as an alias for `data`. (module - ;; CHECK: (func $foo (param $x dataref) (param $y (ref data)) + ;; CHECK: (func $foo (type $dataref_ref|data|_=>_none) (param $x dataref) (param $y (ref data)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $foo (param $x structref) (param $y (ref struct)) diff --git a/test/lit/table-first-special.wast b/test/lit/table-first-special.wast index 0ddc730b9..52f8f8494 100644 --- a/test/lit/table-first-special.wast +++ b/test/lit/table-first-special.wast @@ -21,10 +21,10 @@ ;; CHECK-BINARY: (elem $elem-1 (table $table-1) (i32.const 0) (ref null $vii)) ;; CHECK-TEXT: (elem $elem-1 (table $table-1) (i32.const 0) (ref null $vii)) (elem $elem-1 (table $table-1) (i32.const 0) (ref null $vii)) - ;; CHECK-BINARY: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK-BINARY: (func $foo (type $vii) (param $0 i32) (param $1 i32) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $foo (param $0 i32) (param $1 i32) + ;; CHECK-TEXT: (func $foo (type $vii) (param $0 i32) (param $1 i32) ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: ) (func $foo (param $0 i32) (param $1 i32) @@ -37,6 +37,6 @@ ;; CHECK-NODEBUG: (elem (table $0) (i32.const 0) (ref null $i32_i32_=>_none)) -;; CHECK-NODEBUG: (func $0 (param $0 i32) (param $1 i32) +;; CHECK-NODEBUG: (func $0 (type $i32_i32_=>_none) (param $0 i32) (param $1 i32) ;; CHECK-NODEBUG-NEXT: (nop) ;; CHECK-NODEBUG-NEXT: ) diff --git a/test/lit/table-operations.wast b/test/lit/table-operations.wast index 842270561..5e5e836e5 100644 --- a/test/lit/table-operations.wast +++ b/test/lit/table-operations.wast @@ -38,20 +38,20 @@ ;; CHECK-BINARY: (elem $1 (table $table-2) (i32.const 0) func $bar $bar $bar) - ;; CHECK-BINARY: (func $foo + ;; CHECK-BINARY: (func $foo (type $none_=>_none) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) ;; CHECK-TEXT: (elem $0 (table $table-1) (i32.const 0) func $foo) ;; CHECK-TEXT: (elem $1 (table $table-2) (i32.const 0) func $bar $bar $bar) - ;; CHECK-TEXT: (func $foo + ;; CHECK-TEXT: (func $foo (type $none_=>_none) ;; CHECK-TEXT-NEXT: (nop) ;; CHECK-TEXT-NEXT: ) (func $foo (nop) ) - ;; CHECK-BINARY: (func $bar + ;; CHECK-BINARY: (func $bar (type $none_=>_none) ;; CHECK-BINARY-NEXT: (drop ;; CHECK-BINARY-NEXT: (table.get $table-1 ;; CHECK-BINARY-NEXT: (i32.const 0) @@ -63,7 +63,7 @@ ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $bar + ;; CHECK-TEXT: (func $bar (type $none_=>_none) ;; CHECK-TEXT-NEXT: (drop ;; CHECK-TEXT-NEXT: (table.get $table-1 ;; CHECK-TEXT-NEXT: (i32.const 0) @@ -88,7 +88,7 @@ ) ) - ;; CHECK-BINARY: (func $set-get + ;; CHECK-BINARY: (func $set-get (type $none_=>_none) ;; CHECK-BINARY-NEXT: (table.set $table-1 ;; CHECK-BINARY-NEXT: (i32.const 0) ;; CHECK-BINARY-NEXT: (ref.func $foo) @@ -99,7 +99,7 @@ ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $set-get + ;; CHECK-TEXT: (func $set-get (type $none_=>_none) ;; CHECK-TEXT-NEXT: (table.set $table-1 ;; CHECK-TEXT-NEXT: (i32.const 0) ;; CHECK-TEXT-NEXT: (ref.func $foo) @@ -122,23 +122,23 @@ ) ) - ;; CHECK-BINARY: (func $get-table-size (result i32) + ;; CHECK-BINARY: (func $get-table-size (type $none_=>_i32) (result i32) ;; CHECK-BINARY-NEXT: (table.size $table-1) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $get-table-size (result i32) + ;; CHECK-TEXT: (func $get-table-size (type $none_=>_i32) (result i32) ;; CHECK-TEXT-NEXT: (table.size $table-1) ;; CHECK-TEXT-NEXT: ) (func $get-table-size (result i32) (table.size $table-1) ) - ;; CHECK-BINARY: (func $table-grow (param $sz i32) (result i32) + ;; CHECK-BINARY: (func $table-grow (type $i32_=>_i32) (param $sz i32) (result i32) ;; CHECK-BINARY-NEXT: (table.grow $table-1 ;; CHECK-BINARY-NEXT: (ref.null nofunc) ;; CHECK-BINARY-NEXT: (local.get $sz) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $table-grow (param $sz i32) (result i32) + ;; CHECK-TEXT: (func $table-grow (type $i32_=>_i32) (param $sz i32) (result i32) ;; CHECK-TEXT-NEXT: (table.grow $table-1 ;; CHECK-TEXT-NEXT: (ref.null nofunc) ;; CHECK-TEXT-NEXT: (local.get $sz) @@ -162,11 +162,11 @@ ;; CHECK-NODEBUG: (elem $1 (table $1) (i32.const 0) func $1 $1 $1) -;; CHECK-NODEBUG: (func $0 +;; CHECK-NODEBUG: (func $0 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (nop) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $1 +;; CHECK-NODEBUG: (func $1 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (drop ;; CHECK-NODEBUG-NEXT: (table.get $0 ;; CHECK-NODEBUG-NEXT: (i32.const 0) @@ -179,7 +179,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $2 +;; CHECK-NODEBUG: (func $2 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (table.set $0 ;; CHECK-NODEBUG-NEXT: (i32.const 0) ;; CHECK-NODEBUG-NEXT: (ref.func $0) @@ -191,11 +191,11 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $3 (result i32) +;; CHECK-NODEBUG: (func $3 (type $none_=>_i32) (result i32) ;; CHECK-NODEBUG-NEXT: (table.size $0) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $4 (param $0 i32) (result i32) +;; CHECK-NODEBUG: (func $4 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NODEBUG-NEXT: (table.grow $0 ;; CHECK-NODEBUG-NEXT: (ref.null nofunc) ;; CHECK-NODEBUG-NEXT: (local.get $0) diff --git a/test/lit/tail-call.wast b/test/lit/tail-call.wast index 6948bd001..f4143e100 100644 --- a/test/lit/tail-call.wast +++ b/test/lit/tail-call.wast @@ -8,7 +8,7 @@ (module ;; CHECK: (type $void (func)) - ;; NOMNL: (type $void (func_subtype func)) + ;; NOMNL: (type $void (func)) (type $void (func)) ;; CHECK: (table $t 1 1 funcref) @@ -19,7 +19,7 @@ ;; NOMNL: (elem $e (i32.const 0) $foo) (elem $e (i32.const 0) $foo) - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $void) ;; CHECK-NEXT: (return_call $bar) ;; CHECK-NEXT: ) ;; NOMNL: (func $foo (type $void) @@ -29,7 +29,7 @@ (return_call $bar) ) - ;; CHECK: (func $bar + ;; CHECK: (func $bar (type $void) ;; CHECK-NEXT: (return_call_indirect $t (type $void) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -46,22 +46,24 @@ ;; Check GC types and subtyping (module - ;; CHECK: (type $return-B (func (result (ref $B)))) - ;; NOMNL: (type $return-B (func_subtype (result (ref $B)) func)) - (type $return-B (func (result (ref $B)))) + ;; CHECK: (type $A (struct (field i32))) + ;; NOMNL: (type $return-B (func (result (ref $B)))) - ;; CHECK: (type $return-A (func (result (ref null $A)))) - ;; NOMNL: (type $return-A (func_subtype (result (ref null $A)) func)) - (type $return-A (func (result (ref null $A)))) + ;; NOMNL: (type $return-A (func (result (ref null $A)))) - ;; CHECK: (type $A (struct (field i32))) - ;; NOMNL: (type $A (struct_subtype (field i32) data)) + ;; NOMNL: (type $A (struct (field i32))) (type $A (struct i32)) - ;; CHECK: (type $B (struct (field i32) (field i32))) + ;; CHECK: (type $B (struct_subtype (field i32) (field i32) $A)) ;; NOMNL: (type $B (struct_subtype (field i32) (field i32) $A)) (type $B (struct_subtype i32 i32 $A)) + ;; CHECK: (type $return-B (func (result (ref $B)))) + (type $return-B (func (result (ref $B)))) + + ;; CHECK: (type $return-A (func (result (ref null $A)))) + (type $return-A (func (result (ref null $A)))) + ;; CHECK: (table $t 1 1 funcref) ;; NOMNL: (table $t 1 1 funcref) (table $t 1 1 funcref) @@ -70,7 +72,7 @@ ;; NOMNL: (elem $e (i32.const 0) $callee) (elem $e (i32.const 0) $callee) - ;; CHECK: (func $caller (result (ref null $A)) + ;; CHECK: (func $caller (type $return-A) (result (ref null $A)) ;; CHECK-NEXT: (return_call $callee) ;; CHECK-NEXT: ) ;; NOMNL: (func $caller (type $return-A) (result (ref null $A)) @@ -80,7 +82,7 @@ (return_call $callee) ) - ;; CHECK: (func $caller-indirect (result (ref $B)) + ;; CHECK: (func $caller-indirect (type $return-B) (result (ref $B)) ;; CHECK-NEXT: (return_call_indirect $t (type $return-B) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -94,7 +96,7 @@ (return_call_indirect $t (type $return-B) (i32.const 0)) ) - ;; CHECK: (func $callee (result (ref $B)) + ;; CHECK: (func $callee (type $return-B) (result (ref $B)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) ;; NOMNL: (func $callee (type $return-B) (result (ref $B)) diff --git a/test/lit/types-function-references.wast b/test/lit/types-function-references.wast index d51b73a84..862befcef 100644 --- a/test/lit/types-function-references.wast +++ b/test/lit/types-function-references.wast @@ -28,6 +28,8 @@ ;; CHECK-BINARY: (type $none_=>_i32 (func (result i32))) + ;; CHECK-BINARY: (type $=>eqref (func (result eqref))) + ;; CHECK-BINARY: (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $=>eqref)))) ;; CHECK-TEXT: (type $i32-i32 (func (param i32) (result i32))) @@ -37,38 +39,36 @@ ;; CHECK-TEXT: (type $none_=>_i32 (func (result i32))) + ;; CHECK-TEXT: (type $=>eqref (func (result eqref))) + ;; CHECK-TEXT: (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $=>eqref)))) (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null $_=>_eqref)))) + (type $=>eqref (func (result eqref))) ;; CHECK-BINARY: (type $=>anyref (func (result anyref))) - - ;; CHECK-BINARY: (type $none_=>_i32_ref?|$mixed_results|_f64 (func (result i32 (ref null $mixed_results) f64))) - - ;; CHECK-BINARY: (type $ref?|$mixed_results|_=>_none (func (param (ref null $mixed_results)))) - - ;; CHECK-BINARY: (type $=>eqref (func (result eqref))) ;; CHECK-TEXT: (type $=>anyref (func (result anyref))) - - ;; CHECK-TEXT: (type $none_=>_i32_ref?|$mixed_results|_f64 (func (result i32 (ref null $mixed_results) f64))) - - ;; CHECK-TEXT: (type $ref?|$mixed_results|_=>_none (func (param (ref null $mixed_results)))) - - ;; CHECK-TEXT: (type $=>eqref (func (result eqref))) - (type $=>eqref (func (result eqref))) (type $=>anyref (func (result anyref))) (type $mixed_results (func (result anyref f32 anyref f32))) (type $i32-i32 (func (param i32) (result i32))) + ;; CHECK-BINARY: (type $none_=>_i32_ref?|$mixed_results|_f64 (func (result i32 (ref null $mixed_results) f64))) + + ;; CHECK-BINARY: (type $ref?|$mixed_results|_=>_none (func (param (ref null $mixed_results)))) + ;; CHECK-BINARY: (elem declare func $call-ref $call-ref-more) - ;; CHECK-BINARY: (func $call-ref + ;; CHECK-BINARY: (func $call-ref (type $void) ;; CHECK-BINARY-NEXT: (call_ref $void ;; CHECK-BINARY-NEXT: (ref.func $call-ref) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) + ;; CHECK-TEXT: (type $none_=>_i32_ref?|$mixed_results|_f64 (func (result i32 (ref null $mixed_results) f64))) + + ;; CHECK-TEXT: (type $ref?|$mixed_results|_=>_none (func (param (ref null $mixed_results)))) + ;; CHECK-TEXT: (elem declare func $call-ref $call-ref-more) - ;; CHECK-TEXT: (func $call-ref + ;; CHECK-TEXT: (func $call-ref (type $void) ;; CHECK-TEXT-NEXT: (call_ref $void ;; CHECK-TEXT-NEXT: (ref.func $call-ref) ;; CHECK-TEXT-NEXT: ) @@ -76,12 +76,12 @@ (func $call-ref (call_ref $void (ref.func $call-ref)) ) - ;; CHECK-BINARY: (func $return-call-ref + ;; CHECK-BINARY: (func $return-call-ref (type $void) ;; CHECK-BINARY-NEXT: (return_call_ref $void ;; CHECK-BINARY-NEXT: (ref.func $call-ref) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $return-call-ref + ;; CHECK-TEXT: (func $return-call-ref (type $void) ;; CHECK-TEXT-NEXT: (return_call_ref $void ;; CHECK-TEXT-NEXT: (ref.func $call-ref) ;; CHECK-TEXT-NEXT: ) @@ -89,13 +89,13 @@ (func $return-call-ref (return_call_ref $void (ref.func $call-ref)) ) - ;; CHECK-BINARY: (func $call-ref-more (param $0 i32) (result i32) + ;; CHECK-BINARY: (func $call-ref-more (type $i32-i32) (param $0 i32) (result i32) ;; CHECK-BINARY-NEXT: (call_ref $i32-i32 ;; CHECK-BINARY-NEXT: (i32.const 42) ;; CHECK-BINARY-NEXT: (ref.func $call-ref-more) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $call-ref-more (param $0 i32) (result i32) + ;; CHECK-TEXT: (func $call-ref-more (type $i32-i32) (param $0 i32) (result i32) ;; CHECK-TEXT-NEXT: (call_ref $i32-i32 ;; CHECK-TEXT-NEXT: (i32.const 42) ;; CHECK-TEXT-NEXT: (ref.func $call-ref-more) @@ -104,13 +104,13 @@ (func $call-ref-more (param i32) (result i32) (call_ref $i32-i32 (i32.const 42) (ref.func $call-ref-more)) ) - ;; CHECK-BINARY: (func $call_from-param (param $f (ref $i32-i32)) (result i32) + ;; CHECK-BINARY: (func $call_from-param (type $ref|$i32-i32|_=>_i32) (param $f (ref $i32-i32)) (result i32) ;; CHECK-BINARY-NEXT: (call_ref $i32-i32 ;; CHECK-BINARY-NEXT: (i32.const 42) ;; CHECK-BINARY-NEXT: (local.get $f) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $call_from-param (param $f (ref $i32-i32)) (result i32) + ;; CHECK-TEXT: (func $call_from-param (type $ref|$i32-i32|_=>_i32) (param $f (ref $i32-i32)) (result i32) ;; CHECK-TEXT-NEXT: (call_ref $i32-i32 ;; CHECK-TEXT-NEXT: (i32.const 42) ;; CHECK-TEXT-NEXT: (local.get $f) @@ -119,13 +119,13 @@ (func $call_from-param (param $f (ref $i32-i32)) (result i32) (call_ref $i32-i32 (i32.const 42) (local.get $f)) ) - ;; CHECK-BINARY: (func $call_from-param-null (param $f (ref null $i32-i32)) (result i32) + ;; CHECK-BINARY: (func $call_from-param-null (type $ref?|$i32-i32|_=>_i32) (param $f (ref null $i32-i32)) (result i32) ;; CHECK-BINARY-NEXT: (call_ref $i32-i32 ;; CHECK-BINARY-NEXT: (i32.const 42) ;; CHECK-BINARY-NEXT: (local.get $f) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $call_from-param-null (param $f (ref null $i32-i32)) (result i32) + ;; CHECK-TEXT: (func $call_from-param-null (type $ref?|$i32-i32|_=>_i32) (param $f (ref null $i32-i32)) (result i32) ;; CHECK-TEXT-NEXT: (call_ref $i32-i32 ;; CHECK-TEXT-NEXT: (i32.const 42) ;; CHECK-TEXT-NEXT: (local.get $f) @@ -134,7 +134,7 @@ (func $call_from-param-null (param $f (ref null $i32-i32)) (result i32) (call_ref $i32-i32 (i32.const 42) (local.get $f)) ) - ;; CHECK-BINARY: (func $call_from-local-null (result i32) + ;; CHECK-BINARY: (func $call_from-local-null (type $none_=>_i32) (result i32) ;; CHECK-BINARY-NEXT: (local $f (ref null $i32-i32)) ;; CHECK-BINARY-NEXT: (local.set $f ;; CHECK-BINARY-NEXT: (ref.func $call-ref-more) @@ -144,7 +144,7 @@ ;; CHECK-BINARY-NEXT: (local.get $f) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $call_from-local-null (result i32) + ;; CHECK-TEXT: (func $call_from-local-null (type $none_=>_i32) (result i32) ;; CHECK-TEXT-NEXT: (local $f (ref null $i32-i32)) ;; CHECK-TEXT-NEXT: (local.set $f ;; CHECK-TEXT-NEXT: (ref.func $call-ref-more) @@ -159,22 +159,22 @@ (local.set $f (ref.func $call-ref-more)) (call_ref $i32-i32 (i32.const 42) (local.get $f)) ) - ;; CHECK-BINARY: (func $ref-in-sig (param $0 f64) (result (ref null $=>eqref)) + ;; CHECK-BINARY: (func $ref-in-sig (type $f64_=>_ref_null<_->_eqref>) (param $0 f64) (result (ref null $=>eqref)) ;; CHECK-BINARY-NEXT: (ref.null nofunc) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $ref-in-sig (param $0 f64) (result (ref null $=>eqref)) + ;; CHECK-TEXT: (func $ref-in-sig (type $f64_=>_ref_null<_->_eqref>) (param $0 f64) (result (ref null $=>eqref)) ;; CHECK-TEXT-NEXT: (ref.null nofunc) ;; CHECK-TEXT-NEXT: ) (func $ref-in-sig (param $0 f64) (result (ref null $=>eqref)) (ref.null $=>eqref) ) - ;; CHECK-BINARY: (func $type-only-in-tuple-local + ;; CHECK-BINARY: (func $type-only-in-tuple-local (type $void) ;; CHECK-BINARY-NEXT: (local $x i32) ;; CHECK-BINARY-NEXT: (local $1 f64) ;; CHECK-BINARY-NEXT: (local $2 (ref null $=>anyref)) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $type-only-in-tuple-local + ;; CHECK-TEXT: (func $type-only-in-tuple-local (type $void) ;; CHECK-TEXT-NEXT: (local $x i32) ;; CHECK-TEXT-NEXT: (local $1 f64) ;; CHECK-TEXT-NEXT: (local $2 (ref null $=>anyref)) @@ -183,7 +183,7 @@ (func $type-only-in-tuple-local (local $x (i32 (ref null $=>anyref) f64)) ) - ;; CHECK-BINARY: (func $type-only-in-tuple-block + ;; CHECK-BINARY: (func $type-only-in-tuple-block (type $void) ;; CHECK-BINARY-NEXT: (local $0 (i32 (ref null $mixed_results) f64)) ;; CHECK-BINARY-NEXT: (local $1 (ref null $mixed_results)) ;; CHECK-BINARY-NEXT: (local $2 i32) @@ -218,7 +218,7 @@ ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $type-only-in-tuple-block + ;; CHECK-TEXT: (func $type-only-in-tuple-block (type $void) ;; CHECK-TEXT-NEXT: (local $0 (i32 (ref null $mixed_results) f64)) ;; CHECK-TEXT-NEXT: (local $1 (ref null $mixed_results)) ;; CHECK-TEXT-NEXT: (local $2 i32) @@ -260,7 +260,7 @@ ) ) ) - ;; CHECK-BINARY: (func $ref-types-first + ;; CHECK-BINARY: (func $ref-types-first (type $void) ;; CHECK-BINARY-NEXT: (local $r1 (ref null $mixed_results)) ;; CHECK-BINARY-NEXT: (local $r2 (ref null $mixed_results)) ;; CHECK-BINARY-NEXT: (local $r3 anyref) @@ -272,7 +272,7 @@ ;; CHECK-BINARY-NEXT: (local $i3 i64) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $ref-types-first + ;; CHECK-TEXT: (func $ref-types-first (type $void) ;; CHECK-TEXT-NEXT: (local $r1 (ref null $mixed_results)) ;; CHECK-TEXT-NEXT: (local $r2 (ref null $mixed_results)) ;; CHECK-TEXT-NEXT: (local $r3 anyref) @@ -299,7 +299,7 @@ (local $r5 anyref) (local $r6 funcref) ) - ;; CHECK-BINARY: (func $mvp-types-first + ;; CHECK-BINARY: (func $mvp-types-first (type $void) ;; CHECK-BINARY-NEXT: (local $i1 i32) ;; CHECK-BINARY-NEXT: (local $i2 i64) ;; CHECK-BINARY-NEXT: (local $i3 i64) @@ -311,7 +311,7 @@ ;; CHECK-BINARY-NEXT: (local $r6 funcref) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $mvp-types-first + ;; CHECK-TEXT: (func $mvp-types-first (type $void) ;; CHECK-TEXT-NEXT: (local $i1 i32) ;; CHECK-TEXT-NEXT: (local $i2 i64) ;; CHECK-TEXT-NEXT: (local $i3 i64) @@ -336,7 +336,7 @@ (local $r5 anyref) (local $r6 funcref) ) - ;; CHECK-BINARY: (func $mvp-types-first-param (param $r0 (ref null $mixed_results)) + ;; CHECK-BINARY: (func $mvp-types-first-param (type $ref?|$mixed_results|_=>_none) (param $r0 (ref null $mixed_results)) ;; CHECK-BINARY-NEXT: (local $i1 i32) ;; CHECK-BINARY-NEXT: (local $i2 i64) ;; CHECK-BINARY-NEXT: (local $i3 i64) @@ -348,7 +348,7 @@ ;; CHECK-BINARY-NEXT: (local $r6 funcref) ;; CHECK-BINARY-NEXT: (nop) ;; CHECK-BINARY-NEXT: ) - ;; CHECK-TEXT: (func $mvp-types-first-param (param $r0 (ref null $mixed_results)) + ;; CHECK-TEXT: (func $mvp-types-first-param (type $ref?|$mixed_results|_=>_none) (param $r0 (ref null $mixed_results)) ;; CHECK-TEXT-NEXT: (local $i1 i32) ;; CHECK-TEXT-NEXT: (local $i2 i64) ;; CHECK-TEXT-NEXT: (local $i3 i64) @@ -386,6 +386,8 @@ ;; CHECK-NODEBUG: (type $none_=>_i32 (func (result i32))) +;; CHECK-NODEBUG: (type $none_=>_eqref (func (result eqref))) + ;; CHECK-NODEBUG: (type $f64_=>_ref?|none_->_eqref| (func (param f64) (result (ref null $none_=>_eqref)))) ;; CHECK-NODEBUG: (type $none_=>_anyref (func (result anyref))) @@ -394,44 +396,42 @@ ;; CHECK-NODEBUG: (type $ref?|none_->_anyref_f32_anyref_f32|_=>_none (func (param (ref null $none_=>_anyref_f32_anyref_f32)))) -;; CHECK-NODEBUG: (type $none_=>_eqref (func (result eqref))) - ;; CHECK-NODEBUG: (elem declare func $0 $2) -;; CHECK-NODEBUG: (func $0 +;; CHECK-NODEBUG: (func $0 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (call_ref $none_=>_none ;; CHECK-NODEBUG-NEXT: (ref.func $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $1 +;; CHECK-NODEBUG: (func $1 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (return_call_ref $none_=>_none ;; CHECK-NODEBUG-NEXT: (ref.func $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $2 (param $0 i32) (result i32) +;; CHECK-NODEBUG: (func $2 (type $i32_=>_i32) (param $0 i32) (result i32) ;; CHECK-NODEBUG-NEXT: (call_ref $i32_=>_i32 ;; CHECK-NODEBUG-NEXT: (i32.const 42) ;; CHECK-NODEBUG-NEXT: (ref.func $2) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $3 (param $0 (ref $i32_=>_i32)) (result i32) +;; CHECK-NODEBUG: (func $3 (type $ref|i32_->_i32|_=>_i32) (param $0 (ref $i32_=>_i32)) (result i32) ;; CHECK-NODEBUG-NEXT: (call_ref $i32_=>_i32 ;; CHECK-NODEBUG-NEXT: (i32.const 42) ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $4 (param $0 (ref null $i32_=>_i32)) (result i32) +;; CHECK-NODEBUG: (func $4 (type $ref?|i32_->_i32|_=>_i32) (param $0 (ref null $i32_=>_i32)) (result i32) ;; CHECK-NODEBUG-NEXT: (call_ref $i32_=>_i32 ;; CHECK-NODEBUG-NEXT: (i32.const 42) ;; CHECK-NODEBUG-NEXT: (local.get $0) ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $5 (result i32) +;; CHECK-NODEBUG: (func $5 (type $none_=>_i32) (result i32) ;; CHECK-NODEBUG-NEXT: (local $0 (ref null $i32_=>_i32)) ;; CHECK-NODEBUG-NEXT: (local.set $0 ;; CHECK-NODEBUG-NEXT: (ref.func $2) @@ -442,18 +442,18 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $6 (param $0 f64) (result (ref null $none_=>_eqref)) +;; CHECK-NODEBUG: (func $6 (type $f64_=>_ref?|none_->_eqref|) (param $0 f64) (result (ref null $none_=>_eqref)) ;; CHECK-NODEBUG-NEXT: (ref.null nofunc) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $7 +;; CHECK-NODEBUG: (func $7 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (local $0 i32) ;; CHECK-NODEBUG-NEXT: (local $1 f64) ;; CHECK-NODEBUG-NEXT: (local $2 (ref null $none_=>_anyref)) ;; CHECK-NODEBUG-NEXT: (nop) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $8 +;; CHECK-NODEBUG: (func $8 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (local $0 (i32 (ref null $none_=>_anyref_f32_anyref_f32) f64)) ;; CHECK-NODEBUG-NEXT: (local $1 (ref null $none_=>_anyref_f32_anyref_f32)) ;; CHECK-NODEBUG-NEXT: (local $2 i32) @@ -489,7 +489,7 @@ ;; CHECK-NODEBUG-NEXT: ) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $9 +;; CHECK-NODEBUG: (func $9 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (local $0 (ref null $none_=>_anyref_f32_anyref_f32)) ;; CHECK-NODEBUG-NEXT: (local $1 (ref null $none_=>_anyref_f32_anyref_f32)) ;; CHECK-NODEBUG-NEXT: (local $2 anyref) @@ -502,7 +502,7 @@ ;; CHECK-NODEBUG-NEXT: (nop) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $10 +;; CHECK-NODEBUG: (func $10 (type $none_=>_none) ;; CHECK-NODEBUG-NEXT: (local $0 i32) ;; CHECK-NODEBUG-NEXT: (local $1 i64) ;; CHECK-NODEBUG-NEXT: (local $2 i64) @@ -515,7 +515,7 @@ ;; CHECK-NODEBUG-NEXT: (nop) ;; CHECK-NODEBUG-NEXT: ) -;; CHECK-NODEBUG: (func $11 (param $0 (ref null $none_=>_anyref_f32_anyref_f32)) +;; CHECK-NODEBUG: (func $11 (type $ref?|none_->_anyref_f32_anyref_f32|_=>_none) (param $0 (ref null $none_=>_anyref_f32_anyref_f32)) ;; CHECK-NODEBUG-NEXT: (local $1 i32) ;; CHECK-NODEBUG-NEXT: (local $2 i64) ;; CHECK-NODEBUG-NEXT: (local $3 i64) diff --git a/test/lit/validation/eqref.wast b/test/lit/validation/eqref.wast index 4c97ad39b..8de1e93fa 100644 --- a/test/lit/validation/eqref.wast +++ b/test/lit/validation/eqref.wast @@ -6,7 +6,7 @@ ;; NO-GC: all used types should be allowed -;; GC: (func $foo (param $x eqref) +;; GC: (func $foo (type $eqref_=>_none) (param $x eqref) (module (func $foo (param $x eqref) diff --git a/test/lit/validation/nn-tuples.wast b/test/lit/validation/nn-tuples.wast index 5ecf55fbd..2a621face 100644 --- a/test/lit/validation/nn-tuples.wast +++ b/test/lit/validation/nn-tuples.wast @@ -6,7 +6,7 @@ ;; Test for non-nullable types in tuples (module - ;; CHECK: (func $foo + ;; CHECK: (func $foo (type $none_=>_none) ;; CHECK-NEXT: (local $tuple ((ref any) (ref any))) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: ) diff --git a/test/lit/wasm-split/instrument-in-memory.wast b/test/lit/wasm-split/instrument-in-memory.wast index 3a3c19d7f..3208b0b5d 100644 --- a/test/lit/wasm-split/instrument-in-memory.wast +++ b/test/lit/wasm-split/instrument-in-memory.wast @@ -1,8 +1,8 @@ -;; RUN: wasm-split %s --instrument --in-memory -all -S -o - | filecheck %s +;; RUN: wasm-split %s --instrument --in-memory --enable-threads -S -o - | filecheck %s ;; Check that the output round trips and validates as well -;; RUN: wasm-split %s --instrument --in-memory -all -g -o %t.wasm -;; RUN: wasm-opt -all %t.wasm -S -o - +;; RUN: wasm-split %s --instrument --in-memory --enable-threads -g -o %t.wasm +;; RUN: wasm-opt %t.wasm --enable-threads -S -o - (module (import "env" "foo" (func $foo)) diff --git a/test/lit/wasm-split/instrument-in-secondary-memory.wast b/test/lit/wasm-split/instrument-in-secondary-memory.wast index 3e012293b..bac67f717 100644 --- a/test/lit/wasm-split/instrument-in-secondary-memory.wast +++ b/test/lit/wasm-split/instrument-in-secondary-memory.wast @@ -1,8 +1,8 @@ -;; RUN: wasm-split %s --instrument --in-secondary-memory -all -S -o - | filecheck %s +;; RUN: wasm-split %s --instrument --in-secondary-memory --enable-threads --enable-multi-memories -S -o - | filecheck %s ;; Check that the output round trips and validates as well -;; RUN: wasm-split %s --instrument --in-secondary-memory -all -g -o %t.wasm -;; RUN: wasm-opt -all %t.wasm -S -o - +;; RUN: wasm-split %s --instrument --in-secondary-memory --enable-threads --enable-multi-memories -g -o %t.wasm +;; RUN: wasm-opt --enable-threads --enable-multi-memories %t.wasm -S -o - (module (import "env" "foo" (func $foo)) diff --git a/test/lit/wat-kitchen-sink.wast b/test/lit/wat-kitchen-sink.wast index ca81a8a6a..b7483f68b 100644 --- a/test/lit/wat-kitchen-sink.wast +++ b/test/lit/wat-kitchen-sink.wast @@ -5,103 +5,103 @@ (module $parse ;; types - ;; CHECK: (type $pair (struct_subtype (field (mut i32)) (field (mut i64)) data)) + ;; CHECK: (type $pair (struct (field (mut i32)) (field (mut i64)))) - ;; CHECK: (type $void (func_subtype func)) + ;; CHECK: (type $void (func)) - ;; CHECK: (type $none_=>_i32 (func_subtype (result i32) func)) + ;; CHECK: (type $none_=>_i32 (func (result i32))) - ;; CHECK: (type $ret2 (func_subtype (result i32 i32) func)) + ;; CHECK: (type $ret2 (func (result i32 i32))) (type $ret2 (func (result i32 i32))) (rec - ;; CHECK: (type $i32_i64_=>_none (func_subtype (param i32 i64) func)) + ;; CHECK: (type $i32_i64_=>_none (func (param i32 i64))) - ;; CHECK: (type $i32_=>_none (func_subtype (param i32) func)) + ;; CHECK: (type $i32_=>_none (func (param i32))) - ;; CHECK: (type $v128_i32_=>_v128 (func_subtype (param v128 i32) (result v128) func)) + ;; CHECK: (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) - ;; CHECK: (type $many (func_subtype (param i32 i64 f32 f64) (result anyref (ref func)) func)) + ;; CHECK: (type $many (func (param i32 i64 f32 f64) (result anyref (ref func)))) - ;; CHECK: (type $i32_i32_=>_none (func_subtype (param i32 i32) func)) + ;; CHECK: (type $i32_i32_=>_none (func (param i32 i32))) - ;; CHECK: (type $i32_i32_f64_f64_=>_none (func_subtype (param i32 i32 f64 f64) func)) + ;; CHECK: (type $i32_i32_f64_f64_=>_none (func (param i32 i32 f64 f64))) - ;; CHECK: (type $i64_=>_none (func_subtype (param i64) func)) + ;; CHECK: (type $i64_=>_none (func (param i64))) - ;; CHECK: (type $i32_i32_i32_=>_none (func_subtype (param i32 i32 i32) func)) + ;; CHECK: (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - ;; CHECK: (type $v128_=>_i32 (func_subtype (param v128) (result i32) func)) + ;; CHECK: (type $v128_=>_i32 (func (param v128) (result i32))) - ;; CHECK: (type $v128_v128_=>_v128 (func_subtype (param v128 v128) (result v128) func)) + ;; CHECK: (type $v128_v128_=>_v128 (func (param v128 v128) (result v128))) - ;; CHECK: (type $v128_v128_v128_=>_v128 (func_subtype (param v128 v128 v128) (result v128) func)) + ;; CHECK: (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) - ;; CHECK: (type $i32_i64_v128_=>_none (func_subtype (param i32 i64 v128) func)) + ;; CHECK: (type $i32_i64_v128_=>_none (func (param i32 i64 v128))) - ;; CHECK: (type $i32_i32_i64_i64_=>_none (func_subtype (param i32 i32 i64 i64) func)) + ;; CHECK: (type $i32_i32_i64_i64_=>_none (func (param i32 i32 i64 i64))) - ;; CHECK: (type $i32_=>_i32 (func_subtype (param i32) (result i32) func)) + ;; CHECK: (type $i32_=>_i32 (func (param i32) (result i32))) - ;; CHECK: (type $i32_i64_=>_i32_i64 (func_subtype (param i32 i64) (result i32 i64) func)) + ;; CHECK: (type $i32_i64_=>_i32_i64 (func (param i32 i64) (result i32 i64))) - ;; CHECK: (type $i64_=>_i32_i64 (func_subtype (param i64) (result i32 i64) func)) + ;; CHECK: (type $i64_=>_i32_i64 (func (param i64) (result i32 i64))) - ;; CHECK: (type $i32_=>_i32_i64 (func_subtype (param i32) (result i32 i64) func)) + ;; CHECK: (type $i32_=>_i32_i64 (func (param i32) (result i32 i64))) - ;; CHECK: (type $none_=>_i32_i64 (func_subtype (result i32 i64) func)) + ;; CHECK: (type $none_=>_i32_i64 (func (result i32 i64))) - ;; CHECK: (type $anyref_=>_none (func_subtype (param anyref) func)) + ;; CHECK: (type $anyref_=>_none (func (param anyref))) - ;; CHECK: (type $eqref_eqref_=>_i32 (func_subtype (param eqref eqref) (result i32) func)) + ;; CHECK: (type $eqref_eqref_=>_i32 (func (param eqref eqref) (result i32))) - ;; CHECK: (type $i32_=>_i31ref (func_subtype (param i32) (result i31ref) func)) + ;; CHECK: (type $i32_=>_i31ref (func (param i32) (result i31ref))) - ;; CHECK: (type $i31ref_=>_none (func_subtype (param i31ref) func)) + ;; CHECK: (type $i31ref_=>_none (func (param i31ref))) - ;; CHECK: (type $i32_i64_=>_ref|$pair| (func_subtype (param i32 i64) (result (ref $pair)) func)) + ;; CHECK: (type $i32_i64_=>_ref|$pair| (func (param i32 i64) (result (ref $pair)))) - ;; CHECK: (type $none_=>_ref|$pair| (func_subtype (result (ref $pair)) func)) + ;; CHECK: (type $none_=>_ref|$pair| (func (result (ref $pair)))) - ;; CHECK: (type $ref|$pair|_=>_i32 (func_subtype (param (ref $pair)) (result i32) func)) + ;; CHECK: (type $ref|$pair|_=>_i32 (func (param (ref $pair)) (result i32))) - ;; CHECK: (type $ref|$pair|_=>_i64 (func_subtype (param (ref $pair)) (result i64) func)) + ;; CHECK: (type $ref|$pair|_=>_i64 (func (param (ref $pair)) (result i64))) - ;; CHECK: (type $ref|$pair|_i32_=>_none (func_subtype (param (ref $pair) i32) func)) + ;; CHECK: (type $ref|$pair|_i32_=>_none (func (param (ref $pair) i32))) - ;; CHECK: (type $ref|$pair|_i64_=>_none (func_subtype (param (ref $pair) i64) func)) + ;; CHECK: (type $ref|$pair|_i64_=>_none (func (param (ref $pair) i64))) ;; CHECK: (rec - ;; CHECK-NEXT: (type $s0 (struct_subtype data)) + ;; CHECK-NEXT: (type $s0 (struct )) (type $s0 (sub (struct))) - ;; CHECK: (type $s1 (struct_subtype data)) + ;; CHECK: (type $s1 (struct )) (type $s1 (struct (field))) ) (rec) - ;; CHECK: (type $s2 (struct_subtype (field i32) data)) + ;; CHECK: (type $s2 (struct (field i32))) (type $s2 (struct i32)) - ;; CHECK: (type $s3 (struct_subtype (field i64) data)) + ;; CHECK: (type $s3 (struct (field i64))) (type $s3 (struct (field i64))) - ;; CHECK: (type $s4 (struct_subtype (field $x f32) data)) + ;; CHECK: (type $s4 (struct (field $x f32))) (type $s4 (struct (field $x f32))) - ;; CHECK: (type $s5 (struct_subtype (field i32) (field i64) data)) + ;; CHECK: (type $s5 (struct (field i32) (field i64))) (type $s5 (struct i32 i64)) - ;; CHECK: (type $s6 (struct_subtype (field i64) (field f32) data)) + ;; CHECK: (type $s6 (struct (field i64) (field f32))) (type $s6 (struct (field i64 f32))) - ;; CHECK: (type $s7 (struct_subtype (field $x f32) (field $y f64) data)) + ;; CHECK: (type $s7 (struct (field $x f32) (field $y f64))) (type $s7 (struct (field $x f32) (field $y f64))) - ;; CHECK: (type $s8 (struct_subtype (field i32) (field i64) (field $z f32) (field f64) (field (mut i32)) data)) + ;; CHECK: (type $s8 (struct (field i32) (field i64) (field $z f32) (field f64) (field (mut i32)))) (type $s8 (struct i32 (field) i64 (field $z f32) (field f64 (mut i32)))) - ;; CHECK: (type $a0 (array_subtype i32 data)) + ;; CHECK: (type $a0 (array i32)) (type $a0 (array i32)) - ;; CHECK: (type $a1 (array_subtype i64 data)) + ;; CHECK: (type $a1 (array i64)) (type $a1 (array (field i64))) - ;; CHECK: (type $a2 (array_subtype (mut f32) data)) + ;; CHECK: (type $a2 (array (mut f32))) (type $a2 (array (mut f32))) - ;; CHECK: (type $a3 (array_subtype (mut f64) data)) + ;; CHECK: (type $a3 (array (mut f64))) (type $a3 (array (field $x (mut f64)))) (type $pair (struct (mut i32) (mut i64))) @@ -126,7 +126,7 @@ (global (import "mod" "") (ref null $many)) (global (mut i32) i32.const 0) - ;; CHECK: (type $ref|$s0|_ref|$s1|_ref|$s2|_ref|$s3|_ref|$s4|_ref|$s5|_ref|$s6|_ref|$s7|_ref|$s8|_ref|$a0|_ref|$a1|_ref|$a2|_ref|$a3|_ref|$subvoid|_ref|$submany|_=>_none (func_subtype (param (ref $s0) (ref $s1) (ref $s2) (ref $s3) (ref $s4) (ref $s5) (ref $s6) (ref $s7) (ref $s8) (ref $a0) (ref $a1) (ref $a2) (ref $a3) (ref $subvoid) (ref $submany)) func)) + ;; CHECK: (type $ref|$s0|_ref|$s1|_ref|$s2|_ref|$s3|_ref|$s4|_ref|$s5|_ref|$s6|_ref|$s7|_ref|$s8|_ref|$a0|_ref|$a1|_ref|$a2|_ref|$a3|_ref|$subvoid|_ref|$submany|_=>_none (func (param (ref $s0) (ref $s1) (ref $s2) (ref $s3) (ref $s4) (ref $s5) (ref $s6) (ref $s7) (ref $s8) (ref $a0) (ref $a1) (ref $a2) (ref $a3) (ref $subvoid) (ref $submany)))) ;; CHECK: (import "" "mem" (memory $mimport$1 0)) diff --git a/test/memory-import.wast.from-wast b/test/memory-import.wast.from-wast index 4d27bcc4e..70fc97057 100644 --- a/test/memory-import.wast.from-wast +++ b/test/memory-import.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) (import "env" "memory" (memory $0 1 1)) - (func $foo (result i32) + (func $foo (type $0) (result i32) (i32.load offset=13 (i32.const 37) ) diff --git a/test/memory-import.wast.fromBinary b/test/memory-import.wast.fromBinary index e03f853d0..b83ca836a 100644 --- a/test/memory-import.wast.fromBinary +++ b/test/memory-import.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) (import "env" "memory" (memory $0 1 1)) - (func $foo (result i32) + (func $foo (type $0) (result i32) (i32.load offset=13 (i32.const 37) ) diff --git a/test/memory-import.wast.fromBinary.noDebugInfo b/test/memory-import.wast.fromBinary.noDebugInfo index 196a1b0d7..59e910629 100644 --- a/test/memory-import.wast.fromBinary.noDebugInfo +++ b/test/memory-import.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $mimport$0 1 1)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (i32.load offset=13 (i32.const 37) ) diff --git a/test/memory-import64.wast.from-wast b/test/memory-import64.wast.from-wast index 8f9d70886..cad69d49b 100644 --- a/test/memory-import64.wast.from-wast +++ b/test/memory-import64.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) (import "env" "memory" (memory $0 i64 1 1)) - (func $foo (result i32) + (func $foo (type $0) (result i32) (i32.load offset=13 (i64.const 37) ) diff --git a/test/memory-import64.wast.fromBinary b/test/memory-import64.wast.fromBinary index c89e3a6ca..dca6e27b6 100644 --- a/test/memory-import64.wast.fromBinary +++ b/test/memory-import64.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func (result i32))) (import "env" "memory" (memory $0 i64 1 1)) - (func $foo (result i32) + (func $foo (type $0) (result i32) (i32.load offset=13 (i64.const 37) ) diff --git a/test/memory-import64.wast.fromBinary.noDebugInfo b/test/memory-import64.wast.fromBinary.noDebugInfo index ff5cd6fb2..d64681ab8 100644 --- a/test/memory-import64.wast.fromBinary.noDebugInfo +++ b/test/memory-import64.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $mimport$0 i64 1 1)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (i32.load offset=13 (i64.const 37) ) diff --git a/test/metadce/corners.wast.dced b/test/metadce/corners.wast.dced index c91acc69e..ba5515e94 100644 --- a/test/metadce/corners.wast.dced +++ b/test/metadce/corners.wast.dced @@ -7,7 +7,7 @@ (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) (elem (i32.const 0) $imported_table_func) (export "stackAlloc" (func $stackAlloc)) - (func $stackAlloc + (func $stackAlloc (type $none_=>_none) (drop (global.get $STACKTOP) ) diff --git a/test/metadce/outside.wast.dced b/test/metadce/outside.wast.dced index 246019dc9..be06f17b6 100644 --- a/test/metadce/outside.wast.dced +++ b/test/metadce/outside.wast.dced @@ -10,10 +10,10 @@ (data (global.get $from_segment) "abcd") (elem (global.get $from_segment_2) $table_func) (export "wasm_func" (func $a_wasm_func)) - (func $table_func + (func $table_func (type $none_=>_none) (nop) ) - (func $a_wasm_func + (func $a_wasm_func (type $none_=>_none) (call $a_js_func) (drop (global.get $__THREW__) diff --git a/test/metadce/rooted-export.wast.dced b/test/metadce/rooted-export.wast.dced index dfa486c4b..62001de23 100644 --- a/test/metadce/rooted-export.wast.dced +++ b/test/metadce/rooted-export.wast.dced @@ -4,7 +4,7 @@ (tag $b_wasm_tag (param i32)) (export "wasm_func_b" (func $b_wasm_func)) (export "wasm_tag_b" (tag $b_wasm_tag)) - (func $b_wasm_func + (func $b_wasm_func (type $none_=>_none) (unreachable) ) ) diff --git a/test/metadce/spanning_cycle.wast.dced b/test/metadce/spanning_cycle.wast.dced index 778ce0a51..b7a26c699 100644 --- a/test/metadce/spanning_cycle.wast.dced +++ b/test/metadce/spanning_cycle.wast.dced @@ -4,7 +4,7 @@ (memory $0 1 1) (data "Hello, datacount section!") (export "wasm_func_a" (func $a_wasm_func)) - (func $a_wasm_func + (func $a_wasm_func (type $none_=>_none) (memory.init 0 (i32.const 0) (i32.const 0) diff --git a/test/metadce/tag.wast.dced b/test/metadce/tag.wast.dced index 78ae287f1..704eee1e1 100644 --- a/test/metadce/tag.wast.dced +++ b/test/metadce/tag.wast.dced @@ -3,7 +3,7 @@ (import "env" "imported_tag" (tag $t0 (param))) (tag $t1 (param)) (export "test" (func $test)) - (func $test + (func $test (type $none_=>_none) (try $try (do (throw $t0) diff --git a/test/metadce/threaded.wast.dced b/test/metadce/threaded.wast.dced index 8b04aee92..0554b26a1 100644 --- a/test/metadce/threaded.wast.dced +++ b/test/metadce/threaded.wast.dced @@ -7,16 +7,16 @@ (export "wasm_func2" (func $wasm_func_2)) (export "wasm_func3" (func $wasm_func_3)) (export "wasm_func4" (func $wasm_func_4)) - (func $wasm_func_4 + (func $wasm_func_4 (type $none_=>_none) (nop) ) - (func $wasm_func_3 + (func $wasm_func_3 (type $none_=>_none) (call $js_func_4) ) - (func $wasm_func_2 + (func $wasm_func_2 (type $none_=>_none) (call $js_func_3) ) - (func $wasm_func_1 + (func $wasm_func_1 (type $none_=>_none) (call $js_func_2) ) ) diff --git a/test/metadce/threaded_cycle.wast.dced b/test/metadce/threaded_cycle.wast.dced index 936446ddf..4f130d3b1 100644 --- a/test/metadce/threaded_cycle.wast.dced +++ b/test/metadce/threaded_cycle.wast.dced @@ -8,16 +8,16 @@ (export "wasm_func2" (func $wasm_func_2)) (export "wasm_func3" (func $wasm_func_3)) (export "wasm_func4" (func $wasm_func_4)) - (func $wasm_func_4 + (func $wasm_func_4 (type $none_=>_none) (call $js_func_1) ) - (func $wasm_func_3 + (func $wasm_func_3 (type $none_=>_none) (call $js_func_4) ) - (func $wasm_func_2 + (func $wasm_func_2 (type $none_=>_none) (call $js_func_3) ) - (func $wasm_func_1 + (func $wasm_func_1 (type $none_=>_none) (call $js_func_2) ) ) diff --git a/test/min.wast.from-wast b/test/min.wast.from-wast index f0c501672..d8de52edd 100644 --- a/test/min.wast.from-wast +++ b/test/min.wast.from-wast @@ -5,14 +5,14 @@ (type $3 (func (param i32 i32 i32) (result i32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (param $f f32) (result f32) + (func $floats (type $0) (param $f f32) (result f32) (local $t f32) (f32.add (local.get $t) (local.get $f) ) ) - (func $neg (param $k i32) (param $p i32) (result f32) + (func $neg (type $1) (param $k i32) (param $p i32) (result f32) (local $n f32) (local.tee $n (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $littleswitch (param $x i32) (result i32) + (func $littleswitch (type $2) (param $x i32) (result i32) (block $topmost (result i32) (block $switch-case$2 (block $switch-case$1 @@ -49,7 +49,7 @@ (i32.const 0) ) ) - (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) (block $topmost (result i32) (local.get $i3) ) diff --git a/test/min.wast.fromBinary b/test/min.wast.fromBinary index b8ec13306..ca4d197f6 100644 --- a/test/min.wast.fromBinary +++ b/test/min.wast.fromBinary @@ -5,14 +5,14 @@ (type $3 (func (param i32 i32 i32) (result i32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (param $f f32) (result f32) + (func $floats (type $0) (param $f f32) (result f32) (local $t f32) (f32.add (local.get $t) (local.get $f) ) ) - (func $neg (param $k i32) (param $p i32) (result f32) + (func $neg (type $1) (param $k i32) (param $p i32) (result f32) (local $n f32) (local.tee $n (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $littleswitch (param $x i32) (result i32) + (func $littleswitch (type $2) (param $x i32) (result i32) (block $label$1 (result i32) (block $label$2 (block $label$3 @@ -48,7 +48,7 @@ ) ) ) - (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) (local.get $i3) ) ) diff --git a/test/min.wast.fromBinary.noDebugInfo b/test/min.wast.fromBinary.noDebugInfo index 4d13abb32..2a8589db1 100644 --- a/test/min.wast.fromBinary.noDebugInfo +++ b/test/min.wast.fromBinary.noDebugInfo @@ -5,14 +5,14 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (memory $0 256 256) (export "floats" (func $0)) - (func $0 (param $0 f32) (result f32) + (func $0 (type $f32_=>_f32) (param $0 f32) (result f32) (local $1 f32) (f32.add (local.get $1) (local.get $0) ) ) - (func $1 (param $0 i32) (param $1 i32) (result f32) + (func $1 (type $i32_i32_=>_f32) (param $0 i32) (param $1 i32) (result f32) (local $2 f32) (local.tee $2 (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $2 (param $0 i32) (result i32) + (func $2 (type $i32_=>_i32) (param $0 i32) (result i32) (block $label$1 (result i32) (block $label$2 (block $label$3 @@ -48,7 +48,7 @@ ) ) ) - (func $3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $3 (type $i32_i32_i32_=>_i32) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local.get $2) ) ) diff --git a/test/multi-memories-atomics64.wast.from-wast b/test/multi-memories-atomics64.wast.from-wast index 603e26b5d..433602f8e 100644 --- a/test/multi-memories-atomics64.wast.from-wast +++ b/test/multi-memories-atomics64.wast.from-wast @@ -3,7 +3,7 @@ (memory $appMemory (shared i64 23 256)) (memory $dataMemory (shared i64 23 256)) (memory $instrumentMemory (shared i64 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -134,7 +134,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -199,7 +199,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -260,7 +260,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -345,7 +345,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/multi-memories-atomics64.wast.fromBinary b/test/multi-memories-atomics64.wast.fromBinary index 565a5e63a..2fa4dfd32 100644 --- a/test/multi-memories-atomics64.wast.fromBinary +++ b/test/multi-memories-atomics64.wast.fromBinary @@ -3,7 +3,7 @@ (memory $appMemory (shared i64 23 256)) (memory $dataMemory (shared i64 23 256)) (memory $instrumentMemory (shared i64 23 256)) - (func $atomic-loadstore + (func $atomic-loadstore (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -134,7 +134,7 @@ (local.get $1) ) ) - (func $atomic-rmw + (func $atomic-rmw (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -199,7 +199,7 @@ ) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -260,7 +260,7 @@ ) ) ) - (func $atomic-wait-notify + (func $atomic-wait-notify (type $0) (local $0 i64) (local $1 i64) (local $2 i32) @@ -345,7 +345,7 @@ ) ) ) - (func $atomic-fence + (func $atomic-fence (type $0) (atomic.fence) ) ) diff --git a/test/multi-memories-atomics64.wast.fromBinary.noDebugInfo b/test/multi-memories-atomics64.wast.fromBinary.noDebugInfo index 712877249..36bb41994 100644 --- a/test/multi-memories-atomics64.wast.fromBinary.noDebugInfo +++ b/test/multi-memories-atomics64.wast.fromBinary.noDebugInfo @@ -3,7 +3,7 @@ (memory $0 (shared i64 23 256)) (memory $1 (shared i64 23 256)) (memory $2 (shared i64 23 256)) - (func $0 + (func $0 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -134,7 +134,7 @@ (local.get $1) ) ) - (func $1 + (func $1 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -199,7 +199,7 @@ ) ) ) - (func $2 + (func $2 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -260,7 +260,7 @@ ) ) ) - (func $3 + (func $3 (type $none_=>_none) (local $0 i64) (local $1 i64) (local $2 i32) @@ -345,7 +345,7 @@ ) ) ) - (func $4 + (func $4 (type $none_=>_none) (atomic.fence) ) ) diff --git a/test/multi-memories-basics.wast.from-wast b/test/multi-memories-basics.wast.from-wast index 7998b62f0..8daa23224 100644 --- a/test/multi-memories-basics.wast.from-wast +++ b/test/multi-memories-basics.wast.from-wast @@ -6,36 +6,36 @@ (memory $memory2 1 800) (memory $memory3 1 400) (data (i32.const 0) "abcd") - (func $memory.fill + (func $memory.fill (type $none_=>_none) (memory.fill $memory2 (i32.const 0) (i32.const 1) (i32.const 2) ) ) - (func $memory.copy + (func $memory.copy (type $none_=>_none) (memory.copy $memory2 $memory3 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $memory.init + (func $memory.init (type $none_=>_none) (memory.init $memory1 0 (i32.const 0) (i32.const 0) (i32.const 45) ) ) - (func $memory.grow (result i32) + (func $memory.grow (type $none_=>_i32) (result i32) (memory.grow $memory3 (i32.const 10) ) ) - (func $memory.size (result i32) + (func $memory.size (type $none_=>_i32) (result i32) (memory.size $memory3) ) - (func $loads + (func $loads (type $none_=>_none) (drop (i32.load $memory1 (i32.const 12) @@ -87,7 +87,7 @@ ) ) ) - (func $stores + (func $stores (type $none_=>_none) (i32.store $memory1 (i32.const 12) (i32.const 115) diff --git a/test/multi-memories-basics.wast.fromBinary b/test/multi-memories-basics.wast.fromBinary index 62b926531..58371a62a 100644 --- a/test/multi-memories-basics.wast.fromBinary +++ b/test/multi-memories-basics.wast.fromBinary @@ -6,36 +6,36 @@ (memory $memory2 1 800) (memory $memory3 1 400) (data (i32.const 0) "abcd") - (func $memory.fill + (func $memory.fill (type $none_=>_none) (memory.fill $memory2 (i32.const 0) (i32.const 1) (i32.const 2) ) ) - (func $memory.copy + (func $memory.copy (type $none_=>_none) (memory.copy $memory2 $memory3 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $memory.init + (func $memory.init (type $none_=>_none) (memory.init $memory1 0 (i32.const 0) (i32.const 0) (i32.const 45) ) ) - (func $memory.grow (result i32) + (func $memory.grow (type $none_=>_i32) (result i32) (memory.grow $memory3 (i32.const 10) ) ) - (func $memory.size (result i32) + (func $memory.size (type $none_=>_i32) (result i32) (memory.size $memory3) ) - (func $loads + (func $loads (type $none_=>_none) (drop (i32.load $memory1 (i32.const 12) @@ -87,7 +87,7 @@ ) ) ) - (func $stores + (func $stores (type $none_=>_none) (i32.store $memory1 (i32.const 12) (i32.const 115) diff --git a/test/multi-memories-basics.wast.fromBinary.noDebugInfo b/test/multi-memories-basics.wast.fromBinary.noDebugInfo index 061c0948b..150eca0b4 100644 --- a/test/multi-memories-basics.wast.fromBinary.noDebugInfo +++ b/test/multi-memories-basics.wast.fromBinary.noDebugInfo @@ -6,36 +6,36 @@ (memory $1 1 800) (memory $2 1 400) (data (i32.const 0) "abcd") - (func $0 + (func $0 (type $none_=>_none) (memory.fill $1 (i32.const 0) (i32.const 1) (i32.const 2) ) ) - (func $1 + (func $1 (type $none_=>_none) (memory.copy $1 $2 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $2 + (func $2 (type $none_=>_none) (memory.init $0 0 (i32.const 0) (i32.const 0) (i32.const 45) ) ) - (func $3 (result i32) + (func $3 (type $none_=>_i32) (result i32) (memory.grow $2 (i32.const 10) ) ) - (func $4 (result i32) + (func $4 (type $none_=>_i32) (result i32) (memory.size $2) ) - (func $5 + (func $5 (type $none_=>_none) (drop (i32.load $0 (i32.const 12) @@ -87,7 +87,7 @@ ) ) ) - (func $6 + (func $6 (type $none_=>_none) (i32.store $0 (i32.const 12) (i32.const 115) diff --git a/test/multi-memories-simd.wast.from-wast b/test/multi-memories-simd.wast.from-wast index 918d7fd9c..e156e8e95 100644 --- a/test/multi-memories-simd.wast.from-wast +++ b/test/multi-memories-simd.wast.from-wast @@ -6,312 +6,312 @@ (memory $memoryb 1 1) (memory $memoryc 1 1) (memory $memoryd 1 1) - (func $v128.load (param $0 i32) (result v128) + (func $v128.load (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $memorya (local.get $0) ) ) - (func $v128.load2 (param $0 i32) (result v128) + (func $v128.load2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $memoryb (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i32) (result v128) + (func $v128.load8x8_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $memoryc (local.get $0) ) ) - (func $v128.load8x8_s2 (param $0 i32) (result v128) + (func $v128.load8x8_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $memoryb (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i32) (result v128) + (func $v128.load8x8_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $memoryd (local.get $0) ) ) - (func $v128.load8x8_u2 (param $0 i32) (result v128) + (func $v128.load8x8_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $memoryd (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i32) (result v128) + (func $v128.load16x4_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $memorya (local.get $0) ) ) - (func $v128.load16x4_s2 (param $0 i32) (result v128) + (func $v128.load16x4_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $memoryb (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i32) (result v128) + (func $v128.load16x4_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $memorya (local.get $0) ) ) - (func $v128.load16x4_u2 (param $0 i32) (result v128) + (func $v128.load16x4_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $memorya (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i32) (result v128) + (func $v128.load32x2_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $memoryc (local.get $0) ) ) - (func $v128.load32x2_s2 (param $0 i32) (result v128) + (func $v128.load32x2_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $memoryb (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i32) (result v128) + (func $v128.load32x2_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $memoryb (local.get $0) ) ) - (func $v128.load32x2_u2 (param $0 i32) (result v128) + (func $v128.load32x2_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $memoryc (local.get $0) ) ) - (func $v128.load8_splat (param $0 i32) (result v128) + (func $v128.load8_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $memoryb (local.get $0) ) ) - (func $v128.load8_splat2 (param $0 i32) (result v128) + (func $v128.load8_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $memoryb (local.get $0) ) ) - (func $v128.load16_splat (param $0 i32) (result v128) + (func $v128.load16_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $memorya (local.get $0) ) ) - (func $v128.load16_splat2 (param $0 i32) (result v128) + (func $v128.load16_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $memorya (local.get $0) ) ) - (func $v128.load32_splat (param $0 i32) (result v128) + (func $v128.load32_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $memoryb (local.get $0) ) ) - (func $v128.load32_splat2 (param $0 i32) (result v128) + (func $v128.load32_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $memoryd (local.get $0) ) ) - (func $v128.load64_splat (param $0 i32) (result v128) + (func $v128.load64_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $memoryb (local.get $0) ) ) - (func $v128.load64_splat2 (param $0 i32) (result v128) + (func $v128.load64_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $memorya (local.get $0) ) ) - (func $v128.store (param $0 i32) (param $1 v128) + (func $v128.store (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $memorya (local.get $0) (local.get $1) ) ) - (func $v128.store2 (param $0 i32) (param $1 v128) + (func $v128.store2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $memoryb (local.get $0) (local.get $1) ) ) - (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.load8_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memorya align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryc offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memorya offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryd offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane (param $0 i32) (param $1 v128) + (func $v128.store8_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane2 (param $0 i32) (param $1 v128) + (func $v128.store8_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane (param $0 i32) (param $1 v128) + (func $v128.store16_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane2 (param $0 i32) (param $1 v128) + (func $v128.store16_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane (param $0 i32) (param $1 v128) + (func $v128.store32_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane2 (param $0 i32) (param $1 v128) + (func $v128.store32_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $memoryc 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane (param $0 i32) (param $1 v128) + (func $v128.store64_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryc 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memorya align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryd offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memorya offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryd offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_zero (param $0 i32) (result v128) + (func $v128.load32_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $memorya (local.get $0) ) ) - (func $v128.load32_zero2 (param $0 i32) (result v128) + (func $v128.load32_zero2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $memoryb (local.get $0) ) ) - (func $v128.load64_zero (param $0 i32) (result v128) + (func $v128.load64_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $memoryb (local.get $0) ) ) - (func $v128.load64_zero2 (param $0 i32) (result v128) + (func $v128.load64_zero2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $memoryc (local.get $0) ) diff --git a/test/multi-memories-simd.wast.fromBinary b/test/multi-memories-simd.wast.fromBinary index 48cde73c3..2d64362fd 100644 --- a/test/multi-memories-simd.wast.fromBinary +++ b/test/multi-memories-simd.wast.fromBinary @@ -6,312 +6,312 @@ (memory $memoryb 1 1) (memory $memoryc 1 1) (memory $memoryd 1 1) - (func $v128.load (param $0 i32) (result v128) + (func $v128.load (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $memorya (local.get $0) ) ) - (func $v128.load2 (param $0 i32) (result v128) + (func $v128.load2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $memoryb (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i32) (result v128) + (func $v128.load8x8_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $memoryc (local.get $0) ) ) - (func $v128.load8x8_s2 (param $0 i32) (result v128) + (func $v128.load8x8_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $memoryb (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i32) (result v128) + (func $v128.load8x8_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $memoryd (local.get $0) ) ) - (func $v128.load8x8_u2 (param $0 i32) (result v128) + (func $v128.load8x8_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $memoryd (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i32) (result v128) + (func $v128.load16x4_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $memorya (local.get $0) ) ) - (func $v128.load16x4_s2 (param $0 i32) (result v128) + (func $v128.load16x4_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $memoryb (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i32) (result v128) + (func $v128.load16x4_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $memorya (local.get $0) ) ) - (func $v128.load16x4_u2 (param $0 i32) (result v128) + (func $v128.load16x4_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $memorya (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i32) (result v128) + (func $v128.load32x2_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $memoryc (local.get $0) ) ) - (func $v128.load32x2_s2 (param $0 i32) (result v128) + (func $v128.load32x2_s2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $memoryb (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i32) (result v128) + (func $v128.load32x2_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $memoryb (local.get $0) ) ) - (func $v128.load32x2_u2 (param $0 i32) (result v128) + (func $v128.load32x2_u2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $memoryc (local.get $0) ) ) - (func $v128.load8_splat (param $0 i32) (result v128) + (func $v128.load8_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $memoryb (local.get $0) ) ) - (func $v128.load8_splat2 (param $0 i32) (result v128) + (func $v128.load8_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $memoryb (local.get $0) ) ) - (func $v128.load16_splat (param $0 i32) (result v128) + (func $v128.load16_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $memorya (local.get $0) ) ) - (func $v128.load16_splat2 (param $0 i32) (result v128) + (func $v128.load16_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $memorya (local.get $0) ) ) - (func $v128.load32_splat (param $0 i32) (result v128) + (func $v128.load32_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $memoryb (local.get $0) ) ) - (func $v128.load32_splat2 (param $0 i32) (result v128) + (func $v128.load32_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $memoryd (local.get $0) ) ) - (func $v128.load64_splat (param $0 i32) (result v128) + (func $v128.load64_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $memoryb (local.get $0) ) ) - (func $v128.load64_splat2 (param $0 i32) (result v128) + (func $v128.load64_splat2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $memorya (local.get $0) ) ) - (func $v128.store (param $0 i32) (param $1 v128) + (func $v128.store (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $memorya (local.get $0) (local.get $1) ) ) - (func $v128.store2 (param $0 i32) (param $1 v128) + (func $v128.store2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $memoryb (local.get $0) (local.get $1) ) ) - (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.load8_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memorya align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryc offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryb offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memorya offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset2 (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset2 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $memoryd offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane (param $0 i32) (param $1 v128) + (func $v128.store8_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane2 (param $0 i32) (param $1 v128) + (func $v128.store8_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $memoryd 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane (param $0 i32) (param $1 v128) + (func $v128.store16_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $memorya 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane2 (param $0 i32) (param $1 v128) + (func $v128.store16_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane (param $0 i32) (param $1 v128) + (func $v128.store32_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane2 (param $0 i32) (param $1 v128) + (func $v128.store32_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $memoryc 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane (param $0 i32) (param $1 v128) + (func $v128.store64_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryc 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memorya align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryd offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memorya offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryb offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset2 (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset2 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $memoryd offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_zero (param $0 i32) (result v128) + (func $v128.load32_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $memorya (local.get $0) ) ) - (func $v128.load32_zero2 (param $0 i32) (result v128) + (func $v128.load32_zero2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $memoryb (local.get $0) ) ) - (func $v128.load64_zero (param $0 i32) (result v128) + (func $v128.load64_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $memoryb (local.get $0) ) ) - (func $v128.load64_zero2 (param $0 i32) (result v128) + (func $v128.load64_zero2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $memoryc (local.get $0) ) diff --git a/test/multi-memories-simd.wast.fromBinary.noDebugInfo b/test/multi-memories-simd.wast.fromBinary.noDebugInfo index 583f5850d..943660428 100644 --- a/test/multi-memories-simd.wast.fromBinary.noDebugInfo +++ b/test/multi-memories-simd.wast.fromBinary.noDebugInfo @@ -6,312 +6,312 @@ (memory $1 1 1) (memory $2 1 1) (memory $3 1 1) - (func $0 (param $0 i32) (result v128) + (func $0 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $0 (local.get $0) ) ) - (func $1 (param $0 i32) (result v128) + (func $1 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load $1 (local.get $0) ) ) - (func $2 (param $0 i32) (result v128) + (func $2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $2 (local.get $0) ) ) - (func $3 (param $0 i32) (result v128) + (func $3 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s $1 (local.get $0) ) ) - (func $4 (param $0 i32) (result v128) + (func $4 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $3 (local.get $0) ) ) - (func $5 (param $0 i32) (result v128) + (func $5 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u $3 (local.get $0) ) ) - (func $6 (param $0 i32) (result v128) + (func $6 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $0 (local.get $0) ) ) - (func $7 (param $0 i32) (result v128) + (func $7 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s $1 (local.get $0) ) ) - (func $8 (param $0 i32) (result v128) + (func $8 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $0 (local.get $0) ) ) - (func $9 (param $0 i32) (result v128) + (func $9 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u $0 (local.get $0) ) ) - (func $10 (param $0 i32) (result v128) + (func $10 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $2 (local.get $0) ) ) - (func $11 (param $0 i32) (result v128) + (func $11 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s $1 (local.get $0) ) ) - (func $12 (param $0 i32) (result v128) + (func $12 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $1 (local.get $0) ) ) - (func $13 (param $0 i32) (result v128) + (func $13 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u $2 (local.get $0) ) ) - (func $14 (param $0 i32) (result v128) + (func $14 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $1 (local.get $0) ) ) - (func $15 (param $0 i32) (result v128) + (func $15 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat $1 (local.get $0) ) ) - (func $16 (param $0 i32) (result v128) + (func $16 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $0 (local.get $0) ) ) - (func $17 (param $0 i32) (result v128) + (func $17 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat $0 (local.get $0) ) ) - (func $18 (param $0 i32) (result v128) + (func $18 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $1 (local.get $0) ) ) - (func $19 (param $0 i32) (result v128) + (func $19 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat $3 (local.get $0) ) ) - (func $20 (param $0 i32) (result v128) + (func $20 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $1 (local.get $0) ) ) - (func $21 (param $0 i32) (result v128) + (func $21 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat $0 (local.get $0) ) ) - (func $22 (param $0 i32) (param $1 v128) + (func $22 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $0 (local.get $0) (local.get $1) ) ) - (func $23 (param $0 i32) (param $1 v128) + (func $23 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store $1 (local.get $0) (local.get $1) ) ) - (func $24 (param $0 i32) (param $1 v128) (result v128) + (func $24 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $0 0 (local.get $0) (local.get $1) ) ) - (func $25 (param $0 i32) (param $1 v128) (result v128) + (func $25 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $26 (param $0 i32) (param $1 v128) (result v128) + (func $26 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $27 (param $0 i32) (param $1 v128) (result v128) + (func $27 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane $3 0 (local.get $0) (local.get $1) ) ) - (func $28 (param $0 i32) (param $1 v128) (result v128) + (func $28 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $0 0 (local.get $0) (local.get $1) ) ) - (func $29 (param $0 i32) (param $1 v128) (result v128) + (func $29 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $30 (param $0 i32) (param $1 v128) (result v128) + (func $30 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $3 0 (local.get $0) (local.get $1) ) ) - (func $31 (param $0 i32) (param $1 v128) (result v128) + (func $31 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $32 (param $0 i32) (param $1 v128) (result v128) + (func $32 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $0 align=1 0 (local.get $0) (local.get $1) ) ) - (func $33 (param $0 i32) (param $1 v128) (result v128) + (func $33 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $1 align=1 0 (local.get $0) (local.get $1) ) ) - (func $34 (param $0 i32) (param $1 v128) (result v128) + (func $34 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $2 offset=32 0 (local.get $0) (local.get $1) ) ) - (func $35 (param $0 i32) (param $1 v128) (result v128) + (func $35 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $1 offset=32 0 (local.get $0) (local.get $1) ) ) - (func $36 (param $0 i32) (param $1 v128) (result v128) + (func $36 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $0 offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $37 (param $0 i32) (param $1 v128) (result v128) + (func $37 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane $3 offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $38 (param $0 i32) (param $1 v128) + (func $38 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $0 0 (local.get $0) (local.get $1) ) ) - (func $39 (param $0 i32) (param $1 v128) + (func $39 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane $3 0 (local.get $0) (local.get $1) ) ) - (func $40 (param $0 i32) (param $1 v128) + (func $40 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $0 0 (local.get $0) (local.get $1) ) ) - (func $41 (param $0 i32) (param $1 v128) + (func $41 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $42 (param $0 i32) (param $1 v128) + (func $42 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $43 (param $0 i32) (param $1 v128) + (func $43 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane $2 0 (local.get $0) (local.get $1) ) ) - (func $44 (param $0 i32) (param $1 v128) + (func $44 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $2 0 (local.get $0) (local.get $1) ) ) - (func $45 (param $0 i32) (param $1 v128) + (func $45 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $1 0 (local.get $0) (local.get $1) ) ) - (func $46 (param $0 i32) (param $1 v128) + (func $46 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $1 align=1 0 (local.get $0) (local.get $1) ) ) - (func $47 (param $0 i32) (param $1 v128) + (func $47 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $0 align=1 0 (local.get $0) (local.get $1) ) ) - (func $48 (param $0 i32) (param $1 v128) + (func $48 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $3 offset=32 0 (local.get $0) (local.get $1) ) ) - (func $49 (param $0 i32) (param $1 v128) + (func $49 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $0 offset=32 0 (local.get $0) (local.get $1) ) ) - (func $50 (param $0 i32) (param $1 v128) + (func $50 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $1 offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $51 (param $0 i32) (param $1 v128) + (func $51 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane $3 offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $52 (param $0 i32) (result v128) + (func $52 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $0 (local.get $0) ) ) - (func $53 (param $0 i32) (result v128) + (func $53 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero $1 (local.get $0) ) ) - (func $54 (param $0 i32) (result v128) + (func $54 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $1 (local.get $0) ) ) - (func $55 (param $0 i32) (result v128) + (func $55 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero $2 (local.get $0) ) diff --git a/test/multi-table.wast.from-wast b/test/multi-table.wast.from-wast index ece92124c..6ff0120f7 100644 --- a/test/multi-table.wast.from-wast +++ b/test/multi-table.wast.from-wast @@ -17,15 +17,15 @@ (elem $passive-3 (ref null $none_=>_none) (ref.func $f) (ref.func $g) (ref.null nofunc) (global.get $g1)) (elem $empty func) (elem $especial (table $tspecial) (i32.const 0) (ref null $none_=>_none) (ref.func $f) (ref.func $h)) - (func $f + (func $f (type $none_=>_none) (drop (ref.func $h) ) ) - (func $g + (func $g (type $none_=>_none) (nop) ) - (func $h + (func $h (type $none_=>_none) (nop) ) ) diff --git a/test/multi-table.wast.fromBinary b/test/multi-table.wast.fromBinary index b70e78a2f..938026af3 100644 --- a/test/multi-table.wast.fromBinary +++ b/test/multi-table.wast.fromBinary @@ -17,15 +17,15 @@ (elem $passive-3 (ref null $none_=>_none) (ref.func $f) (ref.func $g) (ref.null nofunc) (global.get $g1)) (elem $empty func) (elem $especial (table $tspecial) (i32.const 0) (ref null $none_=>_none) (ref.func $f) (ref.func $h)) - (func $f + (func $f (type $none_=>_none) (drop (ref.func $h) ) ) - (func $g + (func $g (type $none_=>_none) (nop) ) - (func $h + (func $h (type $none_=>_none) (nop) ) ) diff --git a/test/multi-table.wast.fromBinary.noDebugInfo b/test/multi-table.wast.fromBinary.noDebugInfo index cf938054a..819d147fd 100644 --- a/test/multi-table.wast.fromBinary.noDebugInfo +++ b/test/multi-table.wast.fromBinary.noDebugInfo @@ -17,15 +17,15 @@ (elem $7 (ref null $none_=>_none) (ref.func $0) (ref.func $1) (ref.null nofunc) (global.get $global$0)) (elem $8 func) (elem $9 (table $3) (i32.const 0) (ref null $none_=>_none) (ref.func $0) (ref.func $2)) - (func $0 + (func $0 (type $none_=>_none) (drop (ref.func $2) ) ) - (func $1 + (func $1 (type $none_=>_none) (nop) ) - (func $2 + (func $2 (type $none_=>_none) (nop) ) ) diff --git a/test/multivalue.wast.from-wast b/test/multivalue.wast.from-wast index a09eb88ce..fac9a0fbc 100644 --- a/test/multivalue.wast.from-wast +++ b/test/multivalue.wast.from-wast @@ -16,29 +16,29 @@ (i32.const 0) (i64.const 0) )) - (func $triple (result i32 i64 f32) + (func $triple (type $none_=>_i32_i64_f32) (result i32 i64 f32) (tuple.make (i32.const 42) (i64.const 7) (f32.const 13) ) ) - (func $get-first (result i32) + (func $get-first (type $none_=>_i32) (result i32) (tuple.extract 0 (call $triple) ) ) - (func $get-second (result i64) + (func $get-second (type $none_=>_i64) (result i64) (tuple.extract 1 (call $triple) ) ) - (func $get-third (result f32) + (func $get-third (type $none_=>_f32) (result f32) (tuple.extract 2 (call $triple) ) ) - (func $reverse (result f32 i64 i32) + (func $reverse (type $none_=>_f32_i64_i32) (result f32 i64 i32) (local $x (i32 i64 f32)) (local.set $x (call $triple) @@ -55,7 +55,7 @@ ) ) ) - (func $unreachable (result i64) + (func $unreachable (type $none_=>_i64) (result i64) (tuple.extract 1 (tuple.make (i32.const 42) @@ -64,7 +64,7 @@ ) ) ) - (func $global (result i32 i64) + (func $global (type $none_=>_i32_i64) (result i32 i64) (global.set $g1 (tuple.make (i32.const 42) @@ -73,12 +73,12 @@ ) (global.get $g2) ) - (func $drop-call + (func $drop-call (type $none_=>_none) (drop (call $pair) ) ) - (func $drop-tuple-make + (func $drop-tuple-make (type $none_=>_none) (drop (tuple.make (i32.const 42) @@ -86,7 +86,7 @@ ) ) ) - (func $drop-block + (func $drop-block (type $none_=>_none) (drop (block $block (result i32 i64) (tuple.make @@ -96,7 +96,7 @@ ) ) ) - (func $mv-return (result i32 i64) + (func $mv-return (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -104,7 +104,7 @@ ) ) ) - (func $mv-return-in-block (result i32 i64) + (func $mv-return-in-block (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -112,7 +112,7 @@ ) ) ) - (func $mv-block-break (result i32 i64) + (func $mv-block-break (type $none_=>_i32_i64) (result i32 i64) (block $l (result i32 i64) (br $l (tuple.make @@ -122,7 +122,7 @@ ) ) ) - (func $mv-block-br-if (result i32 i64) + (func $mv-block-br-if (type $none_=>_i32_i64) (result i32 i64) (block $l (result i32 i64) (br_if $l (tuple.make @@ -133,7 +133,7 @@ ) ) ) - (func $mv-if (result i32 i64 externref) + (func $mv-if (type $none_=>_i32_i64_externref) (result i32 i64 externref) (if (result i32 i64 externref) (i32.const 1) (tuple.make @@ -148,7 +148,7 @@ ) ) ) - (func $mv-loop (result i32 i64) + (func $mv-loop (type $none_=>_i32_i64) (result i32 i64) (loop $loop-in (result i32 i64) (tuple.make (i32.const 42) @@ -156,7 +156,7 @@ ) ) ) - (func $mv-switch (result i32 i64) + (func $mv-switch (type $none_=>_i32_i64) (result i32 i64) (block $a (result i32 i64) (block $b (result i32 i64) (br_table $a $b diff --git a/test/multivalue.wast.fromBinary b/test/multivalue.wast.fromBinary index 28e24a2f4..86a87ecfe 100644 --- a/test/multivalue.wast.fromBinary +++ b/test/multivalue.wast.fromBinary @@ -12,14 +12,14 @@ (global $g2 (mut i64) (i64.const 0)) (global $global$2 i32 (i32.const 0)) (global $global$3 i64 (i64.const 0)) - (func $triple (result i32 i64 f32) + (func $triple (type $none_=>_i32_i64_f32) (result i32 i64 f32) (tuple.make (i32.const 42) (i64.const 7) (f32.const 13) ) ) - (func $get-first (result i32) + (func $get-first (type $none_=>_i32) (result i32) (local $0 (i32 i64 f32)) (local $1 i64) (local $2 i32) @@ -50,7 +50,7 @@ (local.get $2) ) ) - (func $get-second (result i64) + (func $get-second (type $none_=>_i64) (result i64) (local $0 i64) (local $1 (i32 i64 f32)) (local $2 i64) @@ -85,7 +85,7 @@ ) (local.get $0) ) - (func $get-third (result f32) + (func $get-third (type $none_=>_f32) (result f32) (local $0 f32) (local $1 (i32 i64 f32)) (local $2 i64) @@ -120,7 +120,7 @@ ) (local.get $0) ) - (func $reverse (result f32 i64 i32) + (func $reverse (type $none_=>_f32_i64_i32) (result f32 i64 i32) (local $x i32) (local $1 i64) (local $2 i64) @@ -229,7 +229,7 @@ ) ) ) - (func $unreachable (result i64) + (func $unreachable (type $none_=>_i64) (result i64) (drop (i32.const 42) ) @@ -238,7 +238,7 @@ ) (unreachable) ) - (func $global (result i32 i64) + (func $global (type $none_=>_i32_i64) (result i32 i64) (local $0 i32) (global.set $g1 (block (result i32) @@ -256,7 +256,7 @@ (global.get $global$3) ) ) - (func $drop-call + (func $drop-call (type $none_=>_none) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -278,7 +278,7 @@ ) ) ) - (func $drop-tuple-make + (func $drop-tuple-make (type $none_=>_none) (local $0 i32) (drop (block (result i32) @@ -292,7 +292,7 @@ ) ) ) - (func $drop-block + (func $drop-block (type $none_=>_none) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -319,7 +319,7 @@ ) ) ) - (func $mv-return (result i32 i64) + (func $mv-return (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -327,7 +327,7 @@ ) ) ) - (func $mv-return-in-block (result i32 i64) + (func $mv-return-in-block (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -335,7 +335,7 @@ ) ) ) - (func $mv-block-break (result i32 i64) + (func $mv-block-break (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (block $label$1 (result i32 i64) @@ -356,7 +356,7 @@ ) ) ) - (func $mv-block-br-if (result i32 i64) + (func $mv-block-br-if (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 @@ -389,7 +389,7 @@ ) ) ) - (func $mv-if (result i32 i64 externref) + (func $mv-if (type $none_=>_i32_i64_externref) (result i32 i64 externref) (local $0 (i32 i64 externref)) (local.set $0 (if (result i32 i64 externref) @@ -418,7 +418,7 @@ ) ) ) - (func $mv-loop (result i32 i64) + (func $mv-loop (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (loop $label$1 (result i32 i64) @@ -437,7 +437,7 @@ ) ) ) - (func $mv-switch (result i32 i64) + (func $mv-switch (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 diff --git a/test/multivalue.wast.fromBinary.noDebugInfo b/test/multivalue.wast.fromBinary.noDebugInfo index 192902759..5bfc406a9 100644 --- a/test/multivalue.wast.fromBinary.noDebugInfo +++ b/test/multivalue.wast.fromBinary.noDebugInfo @@ -12,14 +12,14 @@ (global $global$1 (mut i64) (i64.const 0)) (global $global$2 i32 (i32.const 0)) (global $global$3 i64 (i64.const 0)) - (func $0 (result i32 i64 f32) + (func $0 (type $none_=>_i32_i64_f32) (result i32 i64 f32) (tuple.make (i32.const 42) (i64.const 7) (f32.const 13) ) ) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (local $0 (i32 i64 f32)) (local $1 i64) (local $2 i32) @@ -50,7 +50,7 @@ (local.get $2) ) ) - (func $2 (result i64) + (func $2 (type $none_=>_i64) (result i64) (local $0 i64) (local $1 (i32 i64 f32)) (local $2 i64) @@ -85,7 +85,7 @@ ) (local.get $0) ) - (func $3 (result f32) + (func $3 (type $none_=>_f32) (result f32) (local $0 f32) (local $1 (i32 i64 f32)) (local $2 i64) @@ -120,7 +120,7 @@ ) (local.get $0) ) - (func $4 (result f32 i64 i32) + (func $4 (type $none_=>_f32_i64_i32) (result f32 i64 i32) (local $0 i32) (local $1 i64) (local $2 i64) @@ -229,7 +229,7 @@ ) ) ) - (func $5 (result i64) + (func $5 (type $none_=>_i64) (result i64) (drop (i32.const 42) ) @@ -238,7 +238,7 @@ ) (unreachable) ) - (func $6 (result i32 i64) + (func $6 (type $none_=>_i32_i64) (result i32 i64) (local $0 i32) (global.set $global$0 (block (result i32) @@ -256,7 +256,7 @@ (global.get $global$3) ) ) - (func $7 + (func $7 (type $none_=>_none) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -278,7 +278,7 @@ ) ) ) - (func $8 + (func $8 (type $none_=>_none) (local $0 i32) (drop (block (result i32) @@ -292,7 +292,7 @@ ) ) ) - (func $9 + (func $9 (type $none_=>_none) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -319,7 +319,7 @@ ) ) ) - (func $10 (result i32 i64) + (func $10 (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -327,7 +327,7 @@ ) ) ) - (func $11 (result i32 i64) + (func $11 (type $none_=>_i32_i64) (result i32 i64) (return (tuple.make (i32.const 42) @@ -335,7 +335,7 @@ ) ) ) - (func $12 (result i32 i64) + (func $12 (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (block $label$1 (result i32 i64) @@ -356,7 +356,7 @@ ) ) ) - (func $13 (result i32 i64) + (func $13 (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 @@ -389,7 +389,7 @@ ) ) ) - (func $14 (result i32 i64 externref) + (func $14 (type $none_=>_i32_i64_externref) (result i32 i64 externref) (local $0 (i32 i64 externref)) (local.set $0 (if (result i32 i64 externref) @@ -418,7 +418,7 @@ ) ) ) - (func $15 (result i32 i64) + (func $15 (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (loop $label$1 (result i32 i64) @@ -437,7 +437,7 @@ ) ) ) - (func $16 (result i32 i64) + (func $16 (type $none_=>_i32_i64) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 diff --git a/test/mutable-global.wast.from-wast b/test/mutable-global.wast.from-wast index ab54153c1..1a8e121cd 100644 --- a/test/mutable-global.wast.from-wast +++ b/test/mutable-global.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func)) (import "env" "global-mut" (global $global-mut (mut i32))) - (func $foo + (func $foo (type $0) (global.set $global-mut (i32.add (global.get $global-mut) diff --git a/test/mutable-global.wast.fromBinary b/test/mutable-global.wast.fromBinary index 1a4730a1e..c115bbd4c 100644 --- a/test/mutable-global.wast.fromBinary +++ b/test/mutable-global.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func)) (import "env" "global-mut" (global $global-mut (mut i32))) - (func $foo + (func $foo (type $0) (global.set $global-mut (i32.add (global.get $global-mut) diff --git a/test/mutable-global.wast.fromBinary.noDebugInfo b/test/mutable-global.wast.fromBinary.noDebugInfo index 08d3b6c21..5a3b5c18f 100644 --- a/test/mutable-global.wast.fromBinary.noDebugInfo +++ b/test/mutable-global.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (import "env" "global-mut" (global $gimport$0 (mut i32))) - (func $0 + (func $0 (type $none_=>_none) (global.set $gimport$0 (i32.add (global.get $gimport$0) diff --git a/test/newsyntax.wast.from-wast b/test/newsyntax.wast.from-wast index 7b8e2b2a6..a5a2a47ad 100644 --- a/test/newsyntax.wast.from-wast +++ b/test/newsyntax.wast.from-wast @@ -3,7 +3,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (drop (call_indirect $timport$0 (type $i32_f64_=>_i32) (i32.const 10) diff --git a/test/newsyntax.wast.fromBinary b/test/newsyntax.wast.fromBinary index 5309fb3eb..983916a14 100644 --- a/test/newsyntax.wast.fromBinary +++ b/test/newsyntax.wast.fromBinary @@ -3,7 +3,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (drop (call_indirect $timport$0 (type $i32_f64_=>_i32) (i32.const 10) diff --git a/test/newsyntax.wast.fromBinary.noDebugInfo b/test/newsyntax.wast.fromBinary.noDebugInfo index 5309fb3eb..983916a14 100644 --- a/test/newsyntax.wast.fromBinary.noDebugInfo +++ b/test/newsyntax.wast.fromBinary.noDebugInfo @@ -3,7 +3,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (drop (call_indirect $timport$0 (type $i32_f64_=>_i32) (i32.const 10) diff --git a/test/nonspec-bulk-memory.wast.from-wast b/test/nonspec-bulk-memory.wast.from-wast index 1d78b8e15..bd68ecbd3 100644 --- a/test/nonspec-bulk-memory.wast.from-wast +++ b/test/nonspec-bulk-memory.wast.from-wast @@ -2,24 +2,24 @@ (type $none_=>_none (func)) (memory $0 1024 1024) (data (i32.const 0) "hello, world") - (func $memory.init + (func $memory.init (type $none_=>_none) (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $data.drop + (func $data.drop (type $none_=>_none) (data.drop 0) ) - (func $memory.copy + (func $memory.copy (type $none_=>_none) (memory.copy (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $memory.fill + (func $memory.fill (type $none_=>_none) (memory.fill (i32.const 0) (i32.const 42) diff --git a/test/nonspec-bulk-memory.wast.fromBinary b/test/nonspec-bulk-memory.wast.fromBinary index 9120c43e6..48667b74a 100644 --- a/test/nonspec-bulk-memory.wast.fromBinary +++ b/test/nonspec-bulk-memory.wast.fromBinary @@ -2,24 +2,24 @@ (type $none_=>_none (func)) (memory $0 1024 1024) (data (i32.const 0) "hello, world") - (func $memory.init + (func $memory.init (type $none_=>_none) (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $data.drop + (func $data.drop (type $none_=>_none) (data.drop 0) ) - (func $memory.copy + (func $memory.copy (type $none_=>_none) (memory.copy (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $memory.fill + (func $memory.fill (type $none_=>_none) (memory.fill (i32.const 0) (i32.const 42) diff --git a/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo b/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo index 060667104..75c4b3d74 100644 --- a/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo +++ b/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo @@ -2,24 +2,24 @@ (type $none_=>_none (func)) (memory $0 1024 1024) (data (i32.const 0) "hello, world") - (func $0 + (func $0 (type $none_=>_none) (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $1 + (func $1 (type $none_=>_none) (data.drop 0) ) - (func $2 + (func $2 (type $none_=>_none) (memory.copy (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $3 + (func $3 (type $none_=>_none) (memory.fill (i32.const 0) (i32.const 42) diff --git a/test/passes/Oz_fuzz-exec_all-features.txt b/test/passes/Oz_fuzz-exec_all-features.txt index a38193d08..ba7d11406 100644 --- a/test/passes/Oz_fuzz-exec_all-features.txt +++ b/test/passes/Oz_fuzz-exec_all-features.txt @@ -63,19 +63,23 @@ [LoggingExternalInterface logging 0] [LoggingExternalInterface logging 1] [LoggingExternalInterface logging 0] -[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] [fuzz-exec] calling static-br_on_cast [LoggingExternalInterface logging 3] [fuzz-exec] calling static-br_on_cast_fail [LoggingExternalInterface logging -2] (module - (type $bytes (array (mut i8))) - (type $void_func (func)) - (type $struct (struct (field (mut i32)))) - (type $i32_=>_none (func (param i32))) - (type $extendedstruct (struct (field (mut i32)) (field f64))) - (type $anyref_=>_none (func (param anyref))) - (type $int_func (func (result i32))) + (rec + (type $bytes (array (mut i8))) + (type $struct (struct (field (mut i32)))) + (type $void_func (func)) + (type $extendedstruct (struct )) + (type $int_func (func (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_ref|$struct| (func (result (ref $struct)))) + (type $anyref_=>_none (func (param anyref))) + (type $none_=>_none (func)) + ) (import "fuzzing-support" "log-i32" (func $log (param i32))) (export "structs" (func $0)) (export "arrays" (func $1)) @@ -103,7 +107,7 @@ (export "static-casts" (func $26)) (export "static-br_on_cast" (func $2)) (export "static-br_on_cast_fail" (func $28)) - (func $0 (; has Stack IR ;) + (func $0 (type $void_func) (; has Stack IR ;) (local $0 i32) (call $log (i32.const 0) @@ -120,7 +124,7 @@ (i32.const 100) ) ) - (func $1 (; has Stack IR ;) + (func $1 (type $void_func) (; has Stack IR ;) (local $0 (ref $bytes)) (call $log (array.len @@ -162,12 +166,12 @@ ) ) ) - (func $2 (; has Stack IR ;) + (func $2 (type $void_func) (; has Stack IR ;) (call $log (i32.const 3) ) ) - (func $3 (; has Stack IR ;) + (func $3 (type $void_func) (; has Stack IR ;) (local $0 (ref $struct)) (local.set $0 (struct.new_default $struct) @@ -189,7 +193,7 @@ ) ) ) - (func $4 (; has Stack IR ;) + (func $4 (type $void_func) (; has Stack IR ;) (call $log (i32.const 1) ) @@ -197,12 +201,12 @@ (i32.const 999) ) ) - (func $5 (; has Stack IR ;) + (func $5 (type $void_func) (; has Stack IR ;) (call $log (i32.const 0) ) ) - (func $7 (; has Stack IR ;) (param $0 anyref) + (func $7 (type $anyref_=>_none) (; has Stack IR ;) (param $0 anyref) (drop (block $data (result (ref data)) (drop @@ -217,15 +221,15 @@ ) ) ) - (func $8 (; has Stack IR ;) + (func $8 (type $void_func) (; has Stack IR ;) (nop) ) - (func $9 (; has Stack IR ;) + (func $9 (type $void_func) (; has Stack IR ;) (call $log (i32.const 1) ) ) - (func $12 (; has Stack IR ;) + (func $12 (type $void_func) (; has Stack IR ;) (drop (block (call $log @@ -235,12 +239,12 @@ ) ) ) - (func $13 (; has Stack IR ;) + (func $13 (type $void_func) (; has Stack IR ;) (drop (unreachable) ) ) - (func $18 (; has Stack IR ;) + (func $18 (type $void_func) (; has Stack IR ;) (call $log (i32.const 0) ) @@ -252,7 +256,7 @@ ) (unreachable) ) - (func $20 (; has Stack IR ;) (result i32) + (func $20 (type $int_func) (; has Stack IR ;) (result i32) (array.get_u $bytes (array.new $bytes (i32.const -43) @@ -261,7 +265,7 @@ (i32.const 10) ) ) - (func $23 (; has Stack IR ;) + (func $23 (type $void_func) (; has Stack IR ;) (local $0 (ref $bytes)) (local $1 (ref $bytes)) (array.set $bytes @@ -316,7 +320,7 @@ ) ) ) - (func $24 (; has Stack IR ;) + (func $24 (type $void_func) (; has Stack IR ;) (local $0 (ref $bytes)) (call $log (array.len @@ -341,7 +345,7 @@ ) ) ) - (func $25 (; has Stack IR ;) + (func $25 (type $void_func) (; has Stack IR ;) (call $log (array.get_u $bytes (array.init_static $bytes @@ -351,7 +355,7 @@ ) ) ) - (func $26 (; has Stack IR ;) + (func $26 (type $void_func) (; has Stack IR ;) (call $log (i32.const 1) ) @@ -368,10 +372,10 @@ (i32.const 0) ) (call $log - (i32.const 1) + (i32.const 0) ) ) - (func $28 (; has Stack IR ;) + (func $28 (type $void_func) (; has Stack IR ;) (call $log (i32.const -2) ) @@ -441,7 +445,7 @@ [LoggingExternalInterface logging 0] [LoggingExternalInterface logging 1] [LoggingExternalInterface logging 0] -[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] [fuzz-exec] calling static-br_on_cast [LoggingExternalInterface logging 3] [fuzz-exec] calling static-br_on_cast_fail @@ -450,9 +454,12 @@ ignoring comparison of ExecutionResults! [fuzz-exec] calling foo [host limit allocation failure] (module - (type $none_=>_i32 (func (result i32))) + (rec + (type $none_=>_i32 (func (result i32))) + (type $[mut:i8] (array (mut i8))) + ) (export "foo" (func $0)) - (func $0 (; has Stack IR ;) (result i32) + (func $0 (type $none_=>_i32) (; has Stack IR ;) (result i32) (i32.const 0) ) ) diff --git a/test/passes/duplicate-function-elimination_all-features.txt b/test/passes/duplicate-function-elimination_all-features.txt index 2ad1bdc16..1127d8d79 100644 --- a/test/passes/duplicate-function-elimination_all-features.txt +++ b/test/passes/duplicate-function-elimination_all-features.txt @@ -2,10 +2,10 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_funcref (func (result funcref))) (elem declare func $0) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (i32.const 0) ) - (func $test (result funcref) + (func $test (type $none_=>_funcref) (result funcref) (ref.func $0) ) ) @@ -15,7 +15,7 @@ (memory $foo 16 16) (export "memory" (memory $foo)) (export "global" (global $bar)) - (func $bar + (func $bar (type $none_=>_none) (nop) ) ) @@ -23,10 +23,10 @@ (type $func (func (result i32))) (global $global$0 (ref $func) (ref.func $foo)) (export "export" (func $2)) - (func $foo (result i32) + (func $foo (type $func) (result i32) (unreachable) ) - (func $2 (result i32) + (func $2 (type $func) (result i32) (call_ref $func (global.get $global$0) ) diff --git a/test/passes/fuzz-exec_all-features.txt b/test/passes/fuzz-exec_all-features.txt index 4b3e64e7c..91e475de4 100644 --- a/test/passes/fuzz-exec_all-features.txt +++ b/test/passes/fuzz-exec_all-features.txt @@ -16,27 +16,27 @@ (export "c" (func $c)) (export "d" (func $d)) (export "e" (func $e)) - (func $a (result i32) + (func $a (type $none_=>_i32) (result i32) (i32.extend8_s (i32.const 187) ) ) - (func $b (result i32) + (func $b (type $none_=>_i32) (result i32) (i32.extend16_s (i32.const 33768) ) ) - (func $c (result i64) + (func $c (type $none_=>_i64) (result i64) (i64.extend8_s (i64.const 187) ) ) - (func $d (result i64) + (func $d (type $none_=>_i64) (result i64) (i64.extend16_s (i64.const 33768) ) ) - (func $e (result i64) + (func $e (type $none_=>_i64) (result i64) (i64.extend32_s (i64.const 2148318184) ) @@ -82,28 +82,28 @@ (export "unaligned_notify" (func $3)) (export "wrap_cmpxchg" (func $4)) (export "oob_notify" (func $5)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (i32.atomic.load (i32.const 1) ) ) - (func $1 (result i32) + (func $1 (type $none_=>_i32) (result i32) (i32.atomic.load offset=1 (i32.const 0) ) ) - (func $2 (result i32) + (func $2 (type $none_=>_i32) (result i32) (i32.atomic.load16_u offset=2 (i32.const 0) ) ) - (func $3 (result i32) + (func $3 (type $none_=>_i32) (result i32) (memory.atomic.notify (i32.const 1) (i32.const 1) ) ) - (func $4 (param $0 i32) (param $1 i32) + (func $4 (type $i32_i32_=>_none) (param $0 i32) (param $1 i32) (drop (i32.atomic.rmw8.cmpxchg_u (i32.const 0) @@ -117,7 +117,7 @@ ) ) ) - (func $5 + (func $5 (type $none_=>_none) (drop (memory.atomic.notify offset=22 (i32.const -104) @@ -151,7 +151,7 @@ (memory $0 (shared 1 1)) (data (i32.const 0) "\ff\ff") (export "unsigned_2_bytes" (func $0)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (i32.atomic.rmw16.xor_u (i32.const 0) (i32.const 0) @@ -169,7 +169,7 @@ (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) (memory $0 (shared 1 1)) (export "rmw-reads-modifies-and-writes" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (drop (i64.atomic.rmw16.and_u offset=4 (i32.const 0) @@ -194,7 +194,7 @@ (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) (memory $0 (shared 1 1)) (export "rmw-reads-modifies-and-writes-asymmetrical" (func $0)) - (func $0 + (func $0 (type $none_=>_none) (drop (i32.atomic.rmw8.sub_u (i32.const 3) @@ -217,7 +217,7 @@ (type $none_=>_funcref (func (result funcref))) (elem declare func $func) (export "func" (func $func)) - (func $func (result funcref) + (func $func (type $none_=>_funcref) (result funcref) (ref.func $func) ) ) diff --git a/test/passes/merge-locals_all-features.txt b/test/passes/merge-locals_all-features.txt index cf11edc91..08e530769 100644 --- a/test/passes/merge-locals_all-features.txt +++ b/test/passes/merge-locals_all-features.txt @@ -5,7 +5,7 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (global $global$0 (mut i32) (i32.const 10)) - (func $test (param $x i32) (param $y i32) (result i32) + (func $test (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -17,7 +17,7 @@ ) (local.get $x) ) - (func $test2 (param $x i32) (param $y i32) (result i32) + (func $test2 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -29,7 +29,7 @@ ) (local.get $x) ) - (func $test-multiple (param $x i32) (param $y i32) (result i32) + (func $test-multiple (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -44,7 +44,7 @@ ) (local.get $x) ) - (func $test-just-some (param $x i32) (param $y i32) (result i32) + (func $test-just-some (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -62,7 +62,7 @@ ) (local.get $y) ) - (func $test-just-some2 (param $x i32) (param $y i32) (result i32) + (func $test-just-some2 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -83,7 +83,7 @@ ) (i32.const 500) ) - (func $test-just-some3 (param $x i32) (param $y i32) (result i32) + (func $test-just-some3 (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -104,7 +104,7 @@ ) (local.get $y) ) - (func $silly-self (param $x i32) (param $y i32) (result i32) + (func $silly-self (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -116,7 +116,7 @@ ) (local.get $y) ) - (func $silly-multi (param $x i32) (param $y i32) (result i32) + (func $silly-multi (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -130,7 +130,7 @@ ) (local.get $y) ) - (func $undo-1 (param $var$1 i32) (param $var$2 i32) + (func $undo-1 (type $i32_i32_=>_none) (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) @@ -142,7 +142,7 @@ (local.get $var$1) ) ) - (func $undo-2 (param $var$1 i32) (param $var$2 i32) + (func $undo-2 (type $i32_i32_=>_none) (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) @@ -157,7 +157,7 @@ (local.get $var$1) ) ) - (func $reverse (param $x i32) (param $y i32) + (func $reverse (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -180,7 +180,7 @@ (local.get $y) ) ) - (func $reverse-end (param $x i32) (param $y i32) + (func $reverse-end (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -191,7 +191,7 @@ ) ) ) - (func $reverse-lone-end-2 (param $x i32) (param $y i32) + (func $reverse-lone-end-2 (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -208,7 +208,7 @@ (local.get $y) ) ) - (func $reverse-undo (param $x i32) (param $y i32) + (func $reverse-undo (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -234,7 +234,7 @@ (local.get $y) ) ) - (func $reverse-undo2 (param $x i32) (param $y i32) + (func $reverse-undo2 (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -260,7 +260,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional (param $x i32) (param $y i32) + (func $reverse-undo3-conditional (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -289,7 +289,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional-b (param $x i32) (param $y i32) + (func $reverse-undo3-conditional-b (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -318,7 +318,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional-c (param $x i32) (param $y i32) + (func $reverse-undo3-conditional-c (type $i32_i32_=>_none) (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -355,7 +355,7 @@ (local.get $y) ) ) - (func $fuzz (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64) + (func $fuzz (type $i32_f32_f32_=>_i64) (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64) (local $var$3 i32) (global.set $global$0 (i32.sub @@ -439,7 +439,7 @@ (i64.const -36028797018963968) ) ) - (func $trivial-confusion (param $unused i32) (param $param i32) (param $result i32) + (func $trivial-confusion (type $i32_i32_i32_=>_none) (param $unused i32) (param $param i32) (param $result i32) (loop $label$1 (if (i32.const 1) @@ -457,7 +457,7 @@ ) ) ) - (func $subtype-test + (func $subtype-test (type $none_=>_none) (local $0 anyref) (local $1 i31ref) (local $2 i31ref) diff --git a/test/passes/metrics_all-features.txt b/test/passes/metrics_all-features.txt index bd3368b49..97088f721 100644 --- a/test/passes/metrics_all-features.txt +++ b/test/passes/metrics_all-features.txt @@ -26,7 +26,7 @@ total (elem (i32.const 0) $ifs $ifs $ifs) (tag $e0 (param i32)) (tag $e1 (param i32 i32)) - (func $ifs (param $x i32) + (func $ifs (type $0) (param $x i32) (local $y f32) (block $block0 (if diff --git a/test/passes/minify-imports-and-exports_all-features.txt b/test/passes/minify-imports-and-exports_all-features.txt index 8d99fbbf2..658058027 100644 --- a/test/passes/minify-imports-and-exports_all-features.txt +++ b/test/passes/minify-imports-and-exports_all-features.txt @@ -10019,10 +10019,10 @@ longname4880 => zza (export "NBa" (func $foo1)) (export "OBa" (func $foo2)) (export "PBa" (tag $tag1)) - (func $foo1 + (func $foo1 (type $none_=>_none) (nop) ) - (func $foo2 + (func $foo2 (type $none_=>_none) (nop) ) ) diff --git a/test/passes/minify-imports_all-features.txt b/test/passes/minify-imports_all-features.txt index 8b5d93c81..917397477 100644 --- a/test/passes/minify-imports_all-features.txt +++ b/test/passes/minify-imports_all-features.txt @@ -10013,10 +10013,10 @@ longname4880 => zza (export "foo1" (func $foo1)) (export "foo2" (func $foo2)) (export "tag1" (tag $tag1)) - (func $foo1 + (func $foo1 (type $none_=>_none) (nop) ) - (func $foo2 + (func $foo2 (type $none_=>_none) (nop) ) ) diff --git a/test/passes/multi_line_table_dwarf.bin.txt b/test/passes/multi_line_table_dwarf.bin.txt index 3adc09fef..96a3df20b 100644 --- a/test/passes/multi_line_table_dwarf.bin.txt +++ b/test/passes/multi_line_table_dwarf.bin.txt @@ -434,13 +434,13 @@ file_names[ 1]: (export "sideg" (func $sideg)) (export "sidef" (func $sidef)) (export "__dso_handle" (global $global$0)) - (func $__wasm_call_ctors + (func $__wasm_call_ctors (type $none_=>_none) ;; code offset: 0x3 (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs + (func $__wasm_apply_relocs (type $none_=>_none) ) - (func $sideg (result i32) + (func $sideg (type $none_=>_i32) (result i32) (local $0 i32) ;; code offset: 0xf (local.set $0 @@ -453,7 +453,7 @@ file_names[ 1]: (local.get $0) ) ) - (func $sidef (result i32) + (func $sidef (type $none_=>_i32) (result i32) (local $0 i32) ;; code offset: 0x1b (local.set $0 diff --git a/test/passes/pick-load-signs_all-features.txt b/test/passes/pick-load-signs_all-features.txt index 8fcc78af5..e1781d4ed 100644 --- a/test/passes/pick-load-signs_all-features.txt +++ b/test/passes/pick-load-signs_all-features.txt @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 (shared 16 16)) - (func $atomics-are-always-unsigned (result i32) + (func $atomics-are-always-unsigned (type $none_=>_i32) (result i32) (local $0 i32) (drop (block (result i32) diff --git a/test/passes/precompute-propagate_all-features.txt b/test/passes/precompute-propagate_all-features.txt index edb5b1e05..3099eb687 100644 --- a/test/passes/precompute-propagate_all-features.txt +++ b/test/passes/precompute-propagate_all-features.txt @@ -6,7 +6,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_v128 (func (result v128))) (memory $0 10 10) - (func $basic (param $p i32) + (func $basic (type $i32_=>_none) (param $p i32) (local $x i32) (local.set $x (i32.const 10) @@ -15,7 +15,7 @@ (i32.const 20) ) ) - (func $split (param $p i32) + (func $split (type $i32_=>_none) (param $p i32) (local $x i32) (if (i32.const 1) @@ -30,7 +30,7 @@ ) ) ) - (func $split-but-join (param $p i32) + (func $split-but-join (type $i32_=>_none) (param $p i32) (local $x i32) (if (i32.const 1) @@ -45,7 +45,7 @@ (i32.const 20) ) ) - (func $split-but-join-different (param $p i32) + (func $split-but-join-different (type $i32_=>_none) (param $p i32) (local $x i32) (if (i32.const 1) @@ -63,7 +63,7 @@ ) ) ) - (func $split-but-join-different-b (param $p i32) + (func $split-but-join-different-b (type $i32_=>_none) (param $p i32) (local $x i32) (if (i32.const 1) @@ -81,7 +81,7 @@ ) ) ) - (func $split-but-join-init0 (param $p i32) + (func $split-but-join-init0 (type $i32_=>_none) (param $p i32) (local $x i32) (if (i32.const 1) @@ -93,7 +93,7 @@ (i32.const 0) ) ) - (func $later (param $p i32) + (func $later (type $i32_=>_none) (param $p i32) (local $x i32) (local.set $x (i32.const 10) @@ -111,7 +111,7 @@ (i32.const 39) ) ) - (func $later2 (param $p i32) (result i32) + (func $later2 (type $i32_=>_i32) (param $p i32) (result i32) (local $x i32) (local.set $x (i32.const 10) @@ -121,7 +121,7 @@ ) (i32.const 20) ) - (func $two-ways-but-identical (param $p i32) (result i32) + (func $two-ways-but-identical (type $i32_=>_i32) (param $p i32) (result i32) (local $x i32) (local $y i32) (local.set $x @@ -141,7 +141,7 @@ ) (i32.const 21) ) - (func $two-ways-but-almost-identical (param $p i32) (result i32) + (func $two-ways-but-almost-identical (type $i32_=>_i32) (param $p i32) (result i32) (local $x i32) (local $y i32) (local.set $x @@ -164,7 +164,7 @@ ) (local.get $y) ) - (func $deadloop (param $p i32) (result i32) + (func $deadloop (type $i32_=>_i32) (param $p i32) (result i32) (local $x i32) (local $y i32) (loop $loop @@ -177,7 +177,7 @@ (br $loop) ) ) - (func $deadloop2 (param $p i32) + (func $deadloop2 (type $i32_=>_none) (param $p i32) (local $x i32) (local $y i32) (loop $loop @@ -196,7 +196,7 @@ (br $loop) ) ) - (func $deadloop3 (param $p i32) + (func $deadloop3 (type $i32_=>_none) (param $p i32) (local $x i32) (local $y i32) (loop $loop @@ -215,7 +215,7 @@ (br $loop) ) ) - (func $through-tee (param $x i32) (param $y i32) (result i32) + (func $through-tee (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (local.set $x (local.tee $y (i32.const 7) @@ -225,7 +225,7 @@ (i32.const 14) ) ) - (func $through-tee-more (param $x i32) (param $y i32) (result i32) + (func $through-tee-more (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (local.set $x (i32.eqz (local.tee $y @@ -237,7 +237,7 @@ (i32.const 7) ) ) - (func $multipass (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $multipass (type $i32_i32_i32_=>_i32) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (nop) (if @@ -248,7 +248,7 @@ ) (local.get $2) ) - (func $through-fallthrough (param $x i32) (param $y i32) (result i32) + (func $through-fallthrough (type $i32_i32_=>_i32) (param $x i32) (param $y i32) (result i32) (local.set $x (block (result i32) (nop) @@ -261,7 +261,7 @@ (i32.const 14) ) ) - (func $simd-load (result v128) + (func $simd-load (type $none_=>_v128) (result v128) (local $x v128) (local.set $x (v128.load8_splat @@ -270,7 +270,7 @@ ) (local.get $x) ) - (func $tuple-local (result i32 i64) + (func $tuple-local (type $none_=>_i32_i64) (result i32 i64) (local $i32s (i32 i32)) (local $i64s (i64 i64)) (local.set $i32s diff --git a/test/passes/precompute_all-features.txt b/test/passes/precompute_all-features.txt index ea582d8d4..e26259c5b 100644 --- a/test/passes/precompute_all-features.txt +++ b/test/passes/precompute_all-features.txt @@ -11,7 +11,7 @@ (memory $0 512 512) (data (i32.const 0) "hello!") (elem declare func $dummy) - (func $x (param $x i32) + (func $x (type $0) (param $x i32) (call $x (i32.const 2300) ) @@ -93,7 +93,7 @@ (i32.const 0) ) ) - (func $ret (result i32) + (func $ret (type $none_=>_i32) (result i32) (if (call $ret) (return @@ -108,13 +108,13 @@ ) (i32.const 1) ) - (func $noret + (func $noret (type $none_=>_none) (if (call $ret) (return) ) ) - (func $refinalize-br-condition-unreachable + (func $refinalize-br-condition-unreachable (type $none_=>_none) (block $label$1 (drop (br_if $label$1 @@ -123,7 +123,7 @@ ) ) ) - (func $br_if-condition-is-block-i32-but-unreachable-so-refinalize-tricky + (func $br_if-condition-is-block-i32-but-unreachable-so-refinalize-tricky (type $none_=>_none) (drop (block $label$1 (result i32) (drop @@ -138,7 +138,7 @@ ) ) ) - (func $reuse-br-value (result f64) + (func $reuse-br-value (type $none_=>_f64) (result f64) (block $label$0 (result f64) (i32.store8 (i32.const 1919623207) @@ -165,7 +165,7 @@ (f64.const 4776014875438170098655851e156) ) ) - (func $refinalize-two-breaks-one-unreachable + (func $refinalize-two-breaks-one-unreachable (type $none_=>_none) (drop (block $label$0 (result i64) (block @@ -188,7 +188,7 @@ ) ) ) - (func $one-break-value-and-it-is-unreachable (result f64) + (func $one-break-value-and-it-is-unreachable (type $none_=>_f64) (result f64) (local $var$0 i32) (block $label$6 (block @@ -199,16 +199,16 @@ ) ) ) - (func $global-notprecomputable (result i32) + (func $global-notprecomputable (type $none_=>_i32) (result i32) (i32.add (i32.const 1) (global.get $global-mut) ) ) - (func $global-precomputable (result i32) + (func $global-precomputable (type $none_=>_i32) (result i32) (i32.const 2) ) - (func $global-partiallyprecomputable (result i32) + (func $global-partiallyprecomputable (type $none_=>_i32) (result i32) (i32.sub (i32.add (i32.const 1) @@ -217,49 +217,49 @@ (i32.const 2) ) ) - (func $simd-precompute (result v128) + (func $simd-precompute (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) ) - (func $no-memory-init-precompute + (func $no-memory-init-precompute (type $none_=>_none) (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $no-data-drop-precompute + (func $no-data-drop-precompute (type $none_=>_none) (data.drop 0) ) - (func $no-memory-copy-precompute + (func $no-memory-copy-precompute (type $none_=>_none) (memory.copy (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $no-memory-fill-precompute + (func $no-memory-fill-precompute (type $none_=>_none) (memory.fill (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $tuple-precompute (result i32 i64) + (func $tuple-precompute (type $none_=>_i32_i64) (result i32 i64) (tuple.make (i32.const 42) (i64.const 42) ) ) - (func $loop-precompute (result i32) + (func $loop-precompute (type $none_=>_i32) (result i32) (i32.const 1) ) - (func $reftype-test (result externref) + (func $reftype-test (type $none_=>_externref) (result externref) (ref.null noextern) ) - (func $dummy + (func $dummy (type $none_=>_none) (nop) ) - (func $br_reuse_node + (func $br_reuse_node (type $none_=>_none) (drop (block $l0 (result f32) (drop diff --git a/test/passes/remove-unused-brs_all-features.txt b/test/passes/remove-unused-brs_all-features.txt index ab3ead0f4..4e8e101b2 100644 --- a/test/passes/remove-unused-brs_all-features.txt +++ b/test/passes/remove-unused-brs_all-features.txt @@ -10,7 +10,7 @@ (type $none_=>_none (func)) (import "out" "log" (func $log (param i32))) (elem declare func $br_on-to-br $br_on-to-flow $i32_=>_none $none_=>_i32) - (func $foo (result (ref null $struct)) + (func $foo (type $none_=>_ref?|$struct|) (result (ref null $struct)) (if (result (ref null $struct)) (i32.const 1) (struct.new $struct @@ -21,7 +21,7 @@ (ref.null none) ) ) - (func $test-prefinalize (result f64) + (func $test-prefinalize (type $none_=>_f64) (result f64) (loop $loop (result f64) (if (result f64) (i32.const 1) @@ -38,20 +38,20 @@ ) ) ) - (func $none_=>_i32 (result i32) + (func $none_=>_i32 (type $none_=>_i32) (result i32) (unreachable) ) - (func $i32_=>_none (param $0 i32) + (func $i32_=>_none (type $i32_=>_none) (param $0 i32) (nop) ) - (func $selectify (param $x i32) (result funcref) + (func $selectify (type $i32_=>_funcref) (param $x i32) (result funcref) (select (result funcref) (ref.func $none_=>_i32) (ref.func $i32_=>_none) (local.get $x) ) ) - (func $br_on-to-br (param $func (ref func)) + (func $br_on-to-br (type $ref|func|_=>_none) (param $func (ref func)) (call $log (i32.const 0) ) @@ -134,7 +134,7 @@ ) ) ) - (func $br_on-to-flow + (func $br_on-to-flow (type $none_=>_none) (drop (block $data (result nullref) (drop diff --git a/test/passes/remove-unused-module-elements_all-features.txt b/test/passes/remove-unused-module-elements_all-features.txt index ecf303160..5cebb721e 100644 --- a/test/passes/remove-unused-module-elements_all-features.txt +++ b/test/passes/remove-unused-module-elements_all-features.txt @@ -10,32 +10,32 @@ (export "other1" (func $other1)) (export "other2" (func $other2)) (start $start) - (func $start + (func $start (type $0) (call $called0) ) - (func $called0 + (func $called0 (type $0) (call $called1) ) - (func $called1 + (func $called1 (type $0) (nop) ) - (func $called_indirect + (func $called_indirect (type $0) (nop) ) - (func $exported + (func $exported (type $0) (call $called2) ) - (func $called2 + (func $called2 (type $0) (call $called2) (call $called3) ) - (func $called3 + (func $called3 (type $0) (call $called4) ) - (func $called4 + (func $called4 (type $0) (call $called3) ) - (func $other1 (param $0 i32) + (func $other1 (type $1) (param $0 i32) (call_indirect $0 (type $0) (i32.const 0) ) @@ -75,7 +75,7 @@ ) ) ) - (func $other2 (param $0 i32) + (func $other2 (type $1) (param $0 i32) (unreachable) ) ) @@ -87,7 +87,7 @@ (type $none_=>_none (func)) (import "env" "table2" (table $1 1 1 funcref)) (elem (i32.const 0) $f) - (func $f + (func $f (type $none_=>_none) (nop) ) ) @@ -107,7 +107,7 @@ (import "env" "table" (table $timport$0 1 funcref)) (data (i32.const 1) "hello, world!") (elem (i32.const 0) $waka) - (func $waka + (func $waka (type $none_=>_none) (nop) ) ) @@ -116,7 +116,7 @@ (import "env" "memory" (memory $0 256)) (import "env" "table" (table $timport$0 0 funcref)) (export "user" (func $user)) - (func $user + (func $user (type $0) (drop (i32.load (i32.const 0) @@ -131,7 +131,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user + (func $user (type $none_=>_none) (i32.store (i32.const 0) (i32.const 0) @@ -142,7 +142,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (i32.atomic.rmw.add (i32.const 0) (i32.const 0) @@ -153,7 +153,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (i32.atomic.rmw8.cmpxchg_u (i32.const 0) (i32.const 0) @@ -165,7 +165,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user + (func $user (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -181,7 +181,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.atomic.notify (i32.const 0) (i32.const 0) @@ -192,7 +192,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.grow (i32.const 0) ) @@ -202,7 +202,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.grow (i32.const 0) ) @@ -212,7 +212,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.size) ) ) @@ -224,7 +224,7 @@ (import "env" "tableBase" (global $tableBase i32)) (data (global.get $memoryBase) "hello, world!") (elem (global.get $tableBase) $waka) - (func $waka + (func $waka (type $none_=>_none) (nop) ) ) @@ -240,16 +240,16 @@ (export "one" (func $one)) (export "three" (func $three)) (export "exp_glob" (global $exp_glob)) - (func $one (result i32) + (func $one (type $none_=>_i32) (result i32) (call $two) ) - (func $two (result i32) + (func $two (type $none_=>_i32) (result i32) (global.get $int) ) - (func $three + (func $three (type $none_=>_none) (call $four) ) - (func $four + (func $four (type $none_=>_none) (global.set $set (i32.const 200) ) @@ -265,7 +265,7 @@ (module (type $none_=>_none (func)) (start $starter) - (func $starter + (func $starter (type $none_=>_none) (drop (i32.const 0) ) @@ -284,7 +284,7 @@ (type $0 (func (param f64) (result f64))) (import "env" "table" (table $timport$0 6 6 funcref)) (elem (i32.const 0) $0) - (func $0 (param $var$0 f64) (result f64) + (func $0 (type $0) (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) diff --git a/test/passes/remove-unused-names_merge-blocks_all-features.txt b/test/passes/remove-unused-names_merge-blocks_all-features.txt index e92d2ab9b..176832c37 100644 --- a/test/passes/remove-unused-names_merge-blocks_all-features.txt +++ b/test/passes/remove-unused-names_merge-blocks_all-features.txt @@ -8,21 +8,21 @@ (memory $0 (shared 256 256)) (table $0 1 1 funcref) (elem (i32.const 0) $call-i) - (func $call-i (param $0 i32) + (func $call-i (type $i) (param $0 i32) (nop) ) - (func $call-ii (param $0 i32) (param $1 i32) + (func $call-ii (type $ii) (param $0 i32) (param $1 i32) (nop) ) - (func $call-iii (param $0 i32) (param $1 i32) (param $2 i32) + (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) (nop) ) - (func $b0-yes (param $i1 i32) + (func $b0-yes (type $i) (param $i1 i32) (drop (i32.const 10) ) ) - (func $b0-no (param $i1 i32) + (func $b0-no (type $i) (param $i1 i32) (block $topmost (block $block0 (br $block0) @@ -30,17 +30,17 @@ (br $topmost) ) ) - (func $b0-br-but-ok (param $i1 i32) + (func $b0-br-but-ok (type $i) (param $i1 i32) (block $topmost (br $topmost) ) ) - (func $b1-yes (param $i1 i32) + (func $b1-yes (type $i) (param $i1 i32) (drop (i32.const 10) ) ) - (func $b2-yes (param $i1 i32) + (func $b2-yes (type $i) (param $i1 i32) (drop (i32.const 5) ) @@ -51,7 +51,7 @@ (i32.const 15) ) ) - (func $b3-yes (param $i1 i32) + (func $b3-yes (type $i) (param $i1 i32) (drop (i32.const 3) ) @@ -68,7 +68,7 @@ (i32.const 20) ) ) - (func $b4 (param $i1 i32) + (func $b4 (type $i) (param $i1 i32) (block $inner (drop (i32.const 10) @@ -76,7 +76,7 @@ (br $inner) ) ) - (func $b5 (param $i1 i32) + (func $b5 (type $i) (param $i1 i32) (block $middle (drop (i32.const 10) @@ -87,7 +87,7 @@ (br $middle) ) ) - (func $b6 (param $i1 i32) + (func $b6 (type $i) (param $i1 i32) (drop (i32.const 5) ) @@ -101,7 +101,7 @@ (i32.const 15) ) ) - (func $b7 (param $i1 i32) + (func $b7 (type $i) (param $i1 i32) (drop (i32.const 3) ) @@ -124,7 +124,7 @@ (i32.const 20) ) ) - (func $unary + (func $unary (type $3) (local $x i32) (drop (i32.eqz @@ -175,7 +175,7 @@ ) ) ) - (func $binary + (func $binary (type $3) (drop (i32.add (block (result i32) @@ -312,7 +312,7 @@ ) ) ) - (func $trinary + (func $trinary (type $3) (drop (i32.const 10) ) @@ -519,7 +519,7 @@ ) ) ) - (func $breaks + (func $breaks (type $3) (block $out (drop (i32.const 10) @@ -569,7 +569,7 @@ (unreachable) ) ) - (func $calls + (func $calls (type $3) (call $call-i (block (result i32) (i32.const 10) @@ -717,7 +717,7 @@ (unreachable) ) ) - (func $atomics + (func $atomics (type $3) (drop (i32.const 10) ) @@ -744,7 +744,7 @@ ) ) ) - (func $mix-select (param $x i32) + (func $mix-select (type $i) (param $x i32) (drop (select (local.get $x) @@ -758,7 +758,7 @@ ) ) ) - (func $block-type-change + (func $block-type-change (type $3) (local $0 f64) (local $1 f64) (nop) @@ -770,7 +770,7 @@ (nop) ) ) - (func $do-reorder (param $x i32) + (func $do-reorder (type $i) (param $x i32) (local $y i32) (if (i32.const 1) @@ -787,7 +787,7 @@ ) ) ) - (func $do-not-reorder (param $x i32) + (func $do-not-reorder (type $i) (param $x i32) (local $y i32) (if (i32.const 1) @@ -804,7 +804,7 @@ ) ) ) - (func $return-different-type (result i32) + (func $return-different-type (type $none_=>_i32) (result i32) (drop (f64.abs (block @@ -819,7 +819,7 @@ ) (unreachable) ) - (func $drop-unreachable (result i32) + (func $drop-unreachable (type $none_=>_i32) (result i32) (local $0 i32) (drop (block (result i32) @@ -828,7 +828,7 @@ ) (unreachable) ) - (func $concrete_finale_in_unreachable (result f64) + (func $concrete_finale_in_unreachable (type $none_=>_f64) (result f64) (drop (block (result f64) (unreachable) @@ -837,7 +837,7 @@ ) (f64.const -1) ) - (func $dont-move-unreachable + (func $dont-move-unreachable (type $3) (loop $label$0 (drop (block (result i32) @@ -847,7 +847,7 @@ ) ) ) - (func $dont-move-unreachable-last + (func $dont-move-unreachable-last (type $3) (loop $label$0 (drop (block (result i32) @@ -857,7 +857,7 @@ ) ) ) - (func $move-around-unreachable-in-middle + (func $move-around-unreachable-in-middle (type $3) (loop $label$0 (nop) (drop @@ -873,7 +873,7 @@ ) ) ) - (func $drop-unreachable-block-with-concrete-final + (func $drop-unreachable-block-with-concrete-final (type $3) (drop (block (result i32) (drop @@ -887,7 +887,7 @@ ) ) ) - (func $merging-with-unreachable-in-middle (result i32) + (func $merging-with-unreachable-in-middle (type $none_=>_i32) (result i32) (block (result i32) (return (i32.const 21536) @@ -898,7 +898,7 @@ (i32.const 19299) ) ) - (func $remove-br-after-unreachable + (func $remove-br-after-unreachable (type $3) (block $label$9 (drop (block @@ -910,7 +910,7 @@ ) ) ) - (func $block-tails + (func $block-tails (type $3) (block $l1 (drop (i32.const -2) @@ -1047,7 +1047,7 @@ ) ) ) - (func $loop-tails + (func $loop-tails (type $3) (loop $l1 (drop (i32.const -2) @@ -1196,7 +1196,7 @@ (i32.const 33) ) ) - (func $block-tail-one + (func $block-tail-one (type $3) (block $l1 (drop (i32.const -2) @@ -1216,7 +1216,7 @@ (i32.const 2) ) ) - (func $loop-tail-one + (func $loop-tail-one (type $3) (loop $l1 (drop (i32.const -2) @@ -1236,7 +1236,7 @@ (i32.const 2) ) ) - (func $block-tail-value (result i32) + (func $block-tail-value (type $none_=>_i32) (result i32) (block $l1 (result i32) (drop (i32.const -1) @@ -1250,7 +1250,7 @@ (i32.const 2) ) ) - (func $block-tail-empty + (func $block-tail-empty (type $3) (block $l1 (drop (i32.const -1) @@ -1258,7 +1258,7 @@ (br $l1) ) ) - (func $loop-tail-empty + (func $loop-tail-empty (type $3) (loop $l1 (drop (i32.const -1) @@ -1266,7 +1266,7 @@ (br $l1) ) ) - (func $block-tail-unreachable (result i32) + (func $block-tail-unreachable (type $none_=>_i32) (result i32) (block $l1 (result i32) (drop (i32.const -1) @@ -1283,7 +1283,7 @@ (unreachable) ) ) - (func $loop-tail-unreachable (result i32) + (func $loop-tail-unreachable (type $none_=>_i32) (result i32) (loop $l1 (drop (i32.const -1) @@ -1301,7 +1301,7 @@ (module (type $none_=>_i32 (func (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (func $unreachable-in-sub-block (param $0 f64) (param $1 i32) (result i32) + (func $unreachable-in-sub-block (type $f64_i32_=>_i32) (param $0 f64) (param $1 i32) (result i32) (local $2 i32) (local $9 i32) (loop $label$1 @@ -1330,13 +1330,13 @@ (nop) (local.get $9) ) - (func $trivial (result i32) + (func $trivial (type $none_=>_i32) (result i32) (block (unreachable) (nop) ) ) - (func $trivial-more (result i32) + (func $trivial-more (type $none_=>_i32) (result i32) (block (nop) (unreachable) @@ -1353,7 +1353,7 @@ ) (module (type $none_=>_none (func)) - (func $merge-some-block + (func $merge-some-block (type $none_=>_none) (drop (i32.const 1) ) @@ -1430,7 +1430,7 @@ ) ) ) - (func $merge-some-loop + (func $merge-some-loop (type $none_=>_none) (drop (i32.const 1) ) @@ -1498,7 +1498,7 @@ ) ) ) - (func $merge-some-loop-taken + (func $merge-some-loop-taken (type $none_=>_none) (loop $l1 (block $b1 (drop @@ -1677,10 +1677,10 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (tag $e (param i32)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $throw + (func $throw (type $none_=>_none) (nop) (throw $e (i32.const 3) diff --git a/test/passes/remove-unused-nonfunction-module-elements_all-features.txt b/test/passes/remove-unused-nonfunction-module-elements_all-features.txt index 28391b50d..31ab2b061 100644 --- a/test/passes/remove-unused-nonfunction-module-elements_all-features.txt +++ b/test/passes/remove-unused-nonfunction-module-elements_all-features.txt @@ -10,47 +10,47 @@ (export "other1" (func $other1)) (export "other2" (func $other2)) (start $start) - (func $start + (func $start (type $0) (call $called0) ) - (func $called0 + (func $called0 (type $0) (call $called1) ) - (func $called1 + (func $called1 (type $0) (nop) ) - (func $called_indirect + (func $called_indirect (type $0) (nop) ) - (func $exported + (func $exported (type $0) (call $called2) ) - (func $called2 + (func $called2 (type $0) (call $called2) (call $called3) ) - (func $called3 + (func $called3 (type $0) (call $called4) ) - (func $called4 + (func $called4 (type $0) (call $called3) ) - (func $remove0 + (func $remove0 (type $0) (call $remove1) ) - (func $remove1 + (func $remove1 (type $0) (nop) ) - (func $remove2 + (func $remove2 (type $0) (call $remove2) ) - (func $remove3 + (func $remove3 (type $0) (call $remove4) ) - (func $remove4 + (func $remove4 (type $0) (call $remove3) ) - (func $other1 (param $0 i32) + (func $other1 (type $1) (param $0 i32) (call_indirect $0 (type $0) (i32.const 0) ) @@ -90,7 +90,7 @@ ) ) ) - (func $other2 (param $0 i32) + (func $other2 (type $1) (param $0 i32) (unreachable) ) ) @@ -110,7 +110,7 @@ (import "env" "table" (table $timport$0 1 funcref)) (data (i32.const 1) "hello, world!") (elem (i32.const 0) $waka) - (func $waka + (func $waka (type $none_=>_none) (nop) ) ) @@ -119,7 +119,7 @@ (import "env" "memory" (memory $0 256)) (import "env" "table" (table $timport$0 0 funcref)) (export "user" (func $user)) - (func $user + (func $user (type $0) (drop (i32.load (i32.const 0) @@ -134,7 +134,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user + (func $user (type $none_=>_none) (i32.store (i32.const 0) (i32.const 0) @@ -145,7 +145,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (i32.atomic.rmw.add (i32.const 0) (i32.const 0) @@ -156,7 +156,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (i32.atomic.rmw8.cmpxchg_u (i32.const 0) (i32.const 0) @@ -168,7 +168,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user + (func $user (type $none_=>_none) (local $0 i32) (local $1 i64) (drop @@ -184,7 +184,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.atomic.notify (i32.const 0) (i32.const 0) @@ -195,7 +195,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.grow (i32.const 0) ) @@ -205,7 +205,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 256)) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.grow (i32.const 0) ) @@ -215,7 +215,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (result i32) + (func $user (type $none_=>_i32) (result i32) (memory.size) ) ) @@ -227,7 +227,7 @@ (import "env" "tableBase" (global $tableBase i32)) (data (global.get $memoryBase) "hello, world!") (elem (global.get $tableBase) $waka) - (func $waka + (func $waka (type $none_=>_none) (nop) ) ) @@ -243,16 +243,16 @@ (export "one" (func $one)) (export "three" (func $three)) (export "exp_glob" (global $exp_glob)) - (func $one (result i32) + (func $one (type $none_=>_i32) (result i32) (call $two) ) - (func $two (result i32) + (func $two (type $none_=>_i32) (result i32) (global.get $int) ) - (func $three + (func $three (type $none_=>_none) (call $four) ) - (func $four + (func $four (type $none_=>_none) (global.set $set (i32.const 200) ) @@ -262,23 +262,23 @@ ) ) ) - (func $forget_implemented + (func $forget_implemented (type $none_=>_none) (nop) ) - (func $starter + (func $starter (type $none_=>_none) (nop) ) ) (module (type $none_=>_none (func)) - (func $starter + (func $starter (type $none_=>_none) (nop) ) ) (module (type $none_=>_none (func)) (start $starter) - (func $starter + (func $starter (type $none_=>_none) (drop (i32.const 0) ) @@ -286,7 +286,7 @@ ) (module (type $0 (func (param f64) (result f64))) - (func $0 (param $var$0 f64) (result f64) + (func $0 (type $0) (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -300,7 +300,7 @@ (module (type $0 (func (param f64) (result f64))) (table $0 6 6 funcref) - (func $0 (param $var$0 f64) (result f64) + (func $0 (type $0) (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -318,7 +318,7 @@ (type $0 (func (param f64) (result f64))) (import "env" "table" (table $timport$0 6 6 funcref)) (elem (i32.const 0) $0) - (func $0 (param $var$0 f64) (result f64) + (func $0 (type $0) (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -334,7 +334,7 @@ (type $0 (func (param i32))) (tag $e1 (param i64)) (export "e1" (tag $e1)) - (func $f (param $0 i32) + (func $f (type $0) (param $0 i32) (nop) ) ) diff --git a/test/passes/roundtrip_typenames_features.txt b/test/passes/roundtrip_typenames_features.txt index 2def3c2c1..8078b6fae 100644 --- a/test/passes/roundtrip_typenames_features.txt +++ b/test/passes/roundtrip_typenames_features.txt @@ -1,8 +1,8 @@ (module - (type $ref?|$NamedStruct|_=>_none (func (param (ref null $NamedStruct)))) (type $NamedStruct (struct )) + (type $ref?|$NamedStruct|_=>_none (func (param (ref null $NamedStruct)))) (export "export" (func $0)) - (func $0 (param $0 (ref null $NamedStruct)) + (func $0 (type $ref?|$NamedStruct|_=>_none) (param $0 (ref null $NamedStruct)) (nop) ) ;; features section: mutable-globals, sign-ext, reference-types, gc diff --git a/test/passes/roundtrip_typenames_features.wast b/test/passes/roundtrip_typenames_features.wast index 0fe9bf004..4aeef439b 100644 --- a/test/passes/roundtrip_typenames_features.wast +++ b/test/passes/roundtrip_typenames_features.wast @@ -2,11 +2,10 @@ ;; preserve the features and type names while doing so. (module - (type $ref?|$NamedStruct|_=>_none (func (param (ref null $NamedStruct)))) (type $NamedStruct (struct )) + (type $ref?|$NamedStruct|_=>_none (func (param (ref null $NamedStruct)))) (export "export" (func $0)) (func $0 (param $0 (ref null $NamedStruct)) (nop) ) ) - diff --git a/test/passes/rse_all-features.txt b/test/passes/rse_all-features.txt index 6a4c182d1..96c20e356 100644 --- a/test/passes/rse_all-features.txt +++ b/test/passes/rse_all-features.txt @@ -3,7 +3,7 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_f64_=>_none (func (param i32 f64))) - (func $basic (param $x i32) (param $y f64) + (func $basic (type $i32_f64_=>_none) (param $x i32) (param $y f64) (local $a f32) (local $b i64) (local.set $x @@ -19,7 +19,7 @@ (i64.const 0) ) ) - (func $later-param-use (param $x i32) + (func $later-param-use (type $i32_=>_none) (param $x i32) (local.set $x (i32.const 0) ) @@ -27,7 +27,7 @@ (i32.const 0) ) ) - (func $diff-value (param $x i32) + (func $diff-value (type $i32_=>_none) (param $x i32) (local $a i32) (local.set $x (i32.const 0) @@ -48,7 +48,7 @@ (i32.const 0) ) ) - (func $tuple-value + (func $tuple-value (type $none_=>_none) (local $x (i32 i64)) (local.set $x (tuple.make @@ -63,7 +63,7 @@ ) ) ) - (func $unreach + (func $unreach (type $none_=>_none) (local $a i32) (block $x (drop @@ -87,7 +87,7 @@ ) ) ) - (func $loop + (func $loop (type $none_=>_none) (local $a i32) (local $b i32) (loop $x @@ -114,7 +114,7 @@ (i32.const 1) ) ) - (func $if + (func $if (type $none_=>_none) (local $x i32) (if (i32.const 0) @@ -129,7 +129,7 @@ (i32.const 1) ) ) - (func $if2 + (func $if2 (type $none_=>_none) (local $x i32) (if (local.tee $x @@ -146,7 +146,7 @@ (i32.const 1) ) ) - (func $if3 + (func $if3 (type $none_=>_none) (local $x i32) (if (local.tee $x @@ -163,7 +163,7 @@ (i32.const 1) ) ) - (func $copy + (func $copy (type $none_=>_none) (local $x i32) (local $y i32) (local.set $x @@ -207,7 +207,7 @@ (local.get $x) ) ) - (func $param-unique (param $x i32) + (func $param-unique (type $i32_=>_none) (param $x i32) (local $a i32) (local.set $a (local.get $x) @@ -227,7 +227,7 @@ (local.get $x) ) ) - (func $set-unique + (func $set-unique (type $none_=>_none) (local $x i32) (local $y i32) (local.set $x @@ -285,7 +285,7 @@ (local.get $x) ) ) - (func $identical_complex (param $x i32) + (func $identical_complex (type $i32_=>_none) (param $x i32) (local $y i32) (local.set $y (local.get $x) @@ -306,7 +306,7 @@ (local.get $y) ) ) - (func $merge + (func $merge (type $none_=>_none) (local $x i32) (if (i32.const 1) @@ -341,7 +341,7 @@ (i32.const 2) ) ) - (func $one-arm (param $1 i32) (param $3 i32) + (func $one-arm (type $i32_i32_=>_none) (param $1 i32) (param $3 i32) (local.set $1 (local.get $3) ) @@ -353,7 +353,7 @@ ) ) ) - (func $one-arm2 (param $1 i32) (param $3 i32) + (func $one-arm2 (type $i32_i32_=>_none) (param $1 i32) (param $3 i32) (local.set $1 (local.get $3) ) @@ -364,7 +364,7 @@ ) ) ) - (func $many-merges + (func $many-merges (type $none_=>_none) (local $0 i32) (local $1 i32) (block $block @@ -393,7 +393,7 @@ ) ) ) - (func $fuzz + (func $fuzz (type $none_=>_none) (local $x i32) (loop $label$4 (block $label$5 @@ -422,7 +422,7 @@ ) ) ) - (func $fuzz2 + (func $fuzz2 (type $none_=>_none) (local $var$1 i32) (if (i32.const 0) @@ -445,7 +445,7 @@ ) ) ) - (func $fuzz-nan + (func $fuzz-nan (type $none_=>_none) (local $0 f64) (local $1 f64) (block $block diff --git a/test/passes/simplify-globals_all-features.txt b/test/passes/simplify-globals_all-features.txt index d94ac55d3..d7f2fa13c 100644 --- a/test/passes/simplify-globals_all-features.txt +++ b/test/passes/simplify-globals_all-features.txt @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) (global $g2 i32 (global.get $g1)) - (func $foo + (func $foo (type $none_=>_none) (drop (global.get $g1) ) @@ -17,7 +17,7 @@ (global $g2 i32 (global.get $g1)) (global $g3 i32 (global.get $g2)) (global $g4 i32 (global.get $g3)) - (func $foo + (func $foo (type $none_=>_none) (drop (global.get $g1) ) @@ -40,7 +40,7 @@ (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) (global $g2 i32 (global.get $g1)) - (func $foo + (func $foo (type $none_=>_none) (drop (unreachable) ) @@ -65,7 +65,7 @@ (global $ga (mut i32) (i32.const 4)) (global $gb (mut i32) (i32.const 5)) (global $gc i32 (i32.const 5)) - (func $foo + (func $foo (type $none_=>_none) (drop (i32.const 1) ) @@ -114,7 +114,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (param $x i32) (result i32) + (func $f (type $i32_=>_i32) (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -158,7 +158,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (param $x i32) (result i32) + (func $f (type $i32_=>_i32) (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -181,7 +181,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 i32 (i32.const 1)) - (func $no (param $x i32) (result i32) + (func $no (type $i32_=>_i32) (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -192,7 +192,7 @@ ) (global.get $g1) ) - (func $no2 (param $x i32) (result i32) + (func $no2 (type $i32_=>_i32) (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -201,7 +201,7 @@ ) (global.get $g1) ) - (func $yes (param $x i32) (result i32) + (func $yes (type $i32_=>_i32) (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -216,7 +216,7 @@ (import "env" "global-1" (global $g1 externref)) (global $g2 externref (global.get $g1)) (global $g3 externref (ref.null noextern)) - (func $test1 + (func $test1 (type $none_=>_none) (drop (global.get $g1) ) @@ -224,7 +224,7 @@ (global.get $g1) ) ) - (func $test2 + (func $test2 (type $none_=>_none) (drop (ref.null noextern) ) @@ -233,7 +233,7 @@ (module (type $none_=>_none (func)) (global $write-only i32 (i32.const 1)) - (func $foo + (func $foo (type $none_=>_none) (drop (i32.const 2) ) diff --git a/test/passes/simplify-globals_all-features_fuzz-exec.txt b/test/passes/simplify-globals_all-features_fuzz-exec.txt index f4e2df478..8c46932c7 100644 --- a/test/passes/simplify-globals_all-features_fuzz-exec.txt +++ b/test/passes/simplify-globals_all-features_fuzz-exec.txt @@ -6,10 +6,10 @@ (global $global$0 (mut funcref) (ref.null nofunc)) (elem declare func $0) (export "export" (func $1)) - (func $0 (param $0 f32) (param $1 i31ref) (param $2 i64) (param $3 f64) (param $4 funcref) + (func $0 (type $f32_i31ref_i64_f64_funcref_=>_none) (param $0 f32) (param $1 i31ref) (param $2 i64) (param $3 f64) (param $4 funcref) (nop) ) - (func $1 (result funcref) + (func $1 (type $none_=>_funcref) (result funcref) (global.set $global$0 (ref.func $0) ) diff --git a/test/passes/simplify-locals_all-features.txt b/test/passes/simplify-locals_all-features.txt index fb51e2fed..1774a93ee 100644 --- a/test/passes/simplify-locals_all-features.txt +++ b/test/passes/simplify-locals_all-features.txt @@ -20,7 +20,7 @@ (import "fuzzing-support" "log-f32" (func $fimport$0 (param f32))) (global $global$0 (mut i32) (i32.const 10)) (memory $0 256 256) - (func $contrast + (func $contrast (type $FUNCSIG$v) (local $x i32) (local $y i32) (local $z i32) @@ -82,7 +82,7 @@ ) ) ) - (func $b0-yes (param $i1 i32) + (func $b0-yes (type $4) (param $i1 i32) (local $x i32) (local $y i32) (local $a i32) @@ -406,7 +406,7 @@ ) ) ) - (func $Ia (param $a i32) (result i32) + (func $Ia (type $5) (param $a i32) (result i32) (local $b i32) (block $switch$0 (block $switch-default$6 @@ -417,7 +417,7 @@ (i32.const 60) ) ) - (func $memories (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) + (func $memories (type $6) (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) (local $set_with_no_get i32) (nop) (i32.store8 @@ -447,7 +447,7 @@ ) (nop) ) - (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) + (func $___remdi3 (type $FUNCSIG$iiiii) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$1$1 i32) (local $$1$0 i32) (local $$rem i32) @@ -640,7 +640,7 @@ ) ) ) - (func $block-returns + (func $block-returns (type $FUNCSIG$v) (local $x i32) (local.set $x (block $out (result i32) @@ -714,7 +714,7 @@ ) ) ) - (func $multiple (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) + (func $multiple (type $6) (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) (nop) (local.set $r (i32.add @@ -741,7 +741,7 @@ (local.get $t) ) ) - (func $switch-def (param $i3 i32) (result i32) + (func $switch-def (type $5) (param $i3 i32) (result i32) (local $i1 i32) (local.set $i1 (i32.const 10) @@ -760,7 +760,7 @@ (local.get $i1) ) ) - (func $no-out-of-label (param $x i32) (param $y i32) + (func $no-out-of-label (type $i32_i32_=>_none) (param $x i32) (param $y i32) (nop) (local.set $x (loop $moar (result i32) @@ -787,7 +787,7 @@ (local.get $y) ) ) - (func $freetype-cd (param $a i32) (result i32) + (func $freetype-cd (type $5) (param $a i32) (result i32) (local $e i32) (nop) (local.tee $a @@ -815,7 +815,7 @@ ) ) ) - (func $drop-if-value (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $drop-if-value (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) (local $temp i32) (drop (if (result i32) @@ -843,7 +843,7 @@ (i32.const 0) ) ) - (func $drop-br_if (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) + (func $drop-br_if (type $i32_i32_i32_=>_i32) (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) (nop) (local.tee $label (block $label$break$L4 (result i32) @@ -875,7 +875,7 @@ ) ) ) - (func $drop-tee-unreachable + (func $drop-tee-unreachable (type $FUNCSIG$v) (local $x i32) (local.tee $x (unreachable) @@ -884,7 +884,7 @@ (local.get $x) ) ) - (func $if-return-but-unreachable (param $var$0 i64) + (func $if-return-but-unreachable (type $i64_=>_none) (param $var$0 i64) (if (unreachable) (drop @@ -895,7 +895,7 @@ ) ) ) - (func $if-one-side (result i32) + (func $if-one-side (type $FUNCSIG$i) (result i32) (local $x i32) (nop) (local.tee $x @@ -909,7 +909,7 @@ ) ) ) - (func $if-one-side-undo (result i32) + (func $if-one-side-undo (type $FUNCSIG$i) (result i32) (local $x i32) (local $y i32) (local.set $y @@ -927,7 +927,7 @@ ) (local.get $y) ) - (func $if-one-side-multi (param $0 i32) (result i32) + (func $if-one-side-multi (type $5) (param $0 i32) (result i32) (nop) (local.tee $0 (if (result i32) @@ -956,7 +956,7 @@ ) ) ) - (func $if-one-side-undo-but-its-a-tee (param $0 i32) (result i32) + (func $if-one-side-undo-but-its-a-tee (type $5) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1035,7 +1035,7 @@ ) (i32.const 0) ) - (func $splittable-ifs-multicycle (param $20 i32) (result i32) + (func $splittable-ifs-multicycle (type $5) (param $20 i32) (result i32) (nop) (local.tee $20 (if (result i32) @@ -1053,7 +1053,7 @@ ) ) ) - (func $update-getCounter (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) + (func $update-getCounter (type $i32_f64_f64_f32_i32_=>_f64) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) (global.set $global$0 (i32.sub (global.get $global$0) @@ -1137,7 +1137,7 @@ (import "fuzzing-support" "log3" (func $fimport$2 (param f32))) (global $global$0 (mut i32) (i32.const 10)) (memory $0 (shared 256 256)) - (func $nonatomics (result i32) + (func $nonatomics (type $FUNCSIG$i) (result i32) (local $x i32) (nop) (drop @@ -1149,7 +1149,7 @@ (i32.const 1024) ) ) - (func $nonatomic-growmem (result i32) + (func $nonatomic-growmem (type $FUNCSIG$i) (result i32) (local $x i32) (local.set $x (i32.load @@ -1165,7 +1165,7 @@ ) (local.get $x) ) - (func $atomics + (func $atomics (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.load @@ -1181,7 +1181,7 @@ (local.get $x) ) ) - (func $one-atomic + (func $one-atomic (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.load @@ -1197,7 +1197,7 @@ (local.get $x) ) ) - (func $other-atomic + (func $other-atomic (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.load @@ -1213,7 +1213,7 @@ (local.get $x) ) ) - (func $atomic-growmem (result i32) + (func $atomic-growmem (type $FUNCSIG$i) (result i32) (local $x i32) (local.set $x (i32.load @@ -1229,7 +1229,7 @@ ) (local.get $x) ) - (func $atomicrmw + (func $atomicrmw (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.rmw.add @@ -1246,7 +1246,7 @@ (local.get $x) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.rmw.cmpxchg @@ -1264,7 +1264,7 @@ (local.get $x) ) ) - (func $br-value-reordering (result i32) + (func $br-value-reordering (type $FUNCSIG$i) (result i32) (local $temp i32) (block $outside (loop $loop @@ -1287,7 +1287,7 @@ ) (unreachable) ) - (func $br-value-reordering-safe (result i32) + (func $br-value-reordering-safe (type $FUNCSIG$i) (result i32) (local $temp i32) (local.set $temp (block $outside (result i32) @@ -1313,7 +1313,7 @@ ) (unreachable) ) - (func $if-one-side-unreachable + (func $if-one-side-unreachable (type $FUNCSIG$v) (local $x i32) (block $out (drop @@ -1349,7 +1349,7 @@ ) ) ) - (func $if-one-side-unreachable-blocks + (func $if-one-side-unreachable-blocks (type $FUNCSIG$v) (local $x i32) (local $y i32) (block $out @@ -1400,7 +1400,7 @@ ) ) ) - (func $loop-value (param $x i32) (result i32) + (func $loop-value (type $5) (param $x i32) (result i32) (loop $loopy (unreachable) ) @@ -1410,7 +1410,7 @@ (i32.const 1) ) ) - (func $loop-loop-loopy-value (param $x i32) (result i32) + (func $loop-loop-loopy-value (type $5) (param $x i32) (result i32) (nop) (loop $loopy1 (result i32) (nop) @@ -1423,7 +1423,7 @@ ) ) ) - (func $loop-modified-during-main-pass-be-careful-fuzz (result i32) + (func $loop-modified-during-main-pass-be-careful-fuzz (type $FUNCSIG$i) (result i32) (local $0 i32) (nop) (if (result i32) @@ -1440,11 +1440,11 @@ ) ) ) - (func $loop-later (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-later (type $FUNCSIG$iiiiii) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (nop) (i32.const 0) ) - (func $pick + (func $pick (type $FUNCSIG$v) (local $x i32) (local $y i32) (local.set $x @@ -1467,7 +1467,7 @@ (local.get $y) ) ) - (func $pick-2 + (func $pick-2 (type $FUNCSIG$v) (local $x i32) (local $y i32) (local.set $y @@ -1490,7 +1490,7 @@ (local.get $x) ) ) - (func $many + (func $many (type $FUNCSIG$v) (local $x i32) (local $y i32) (local $z i32) @@ -1561,7 +1561,7 @@ (local.get $x) ) ) - (func $loop-copies (param $x i32) (param $y i32) + (func $loop-copies (type $i32_i32_=>_none) (param $x i32) (param $y i32) (loop $loop (nop) (drop @@ -1572,7 +1572,7 @@ ) ) ) - (func $proper-type (result f64) + (func $proper-type (type $none_=>_f64) (result f64) (local $var$0 i32) (local $var$2 f64) (local.set $var$0 @@ -1584,7 +1584,7 @@ ) (local.get $var$2) ) - (func $multi-pass-get-equivs-right (param $var$0 i32) (param $var$1 i32) (result f64) + (func $multi-pass-get-equivs-right (type $i32_i32_=>_f64) (param $var$0 i32) (param $var$1 i32) (result f64) (local $var$2 i32) (nop) (i32.store @@ -1597,7 +1597,7 @@ ) ) ) - (func $if-value-structure-equivalent (param $x i32) (result i32) + (func $if-value-structure-equivalent (type $5) (param $x i32) (result i32) (local $y i32) (nop) (local.tee $x @@ -1615,7 +1615,7 @@ ) ) ) - (func $set-tee-need-one-of-them (param $var$0 i32) (param $var$1 i32) (result i32) + (func $set-tee-need-one-of-them (type $i32_i32_=>_i32) (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (local $var$3 i32) (local.set $var$2 @@ -1628,7 +1628,7 @@ ) (local.get $var$2) ) - (func $loop-value-harder (result i32) + (func $loop-value-harder (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1681,7 +1681,7 @@ (i32.const -5417091) ) ) - (func $tee-chain (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) + (func $tee-chain (type $FUNCSIG$iiiiii) (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) (nop) (drop (i32.const 10) @@ -1715,7 +1715,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data "hello, there!") - (func $memory-init-load + (func $memory-init-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1731,7 +1731,7 @@ (local.get $x) ) ) - (func $memory-init-store + (func $memory-init-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1751,7 +1751,7 @@ (local.get $x) ) ) - (func $memory-copy-load + (func $memory-copy-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1767,7 +1767,7 @@ (local.get $x) ) ) - (func $memory-copy-store + (func $memory-copy-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1787,7 +1787,7 @@ (local.get $x) ) ) - (func $memory-fill-load + (func $memory-fill-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1803,7 +1803,7 @@ (local.get $x) ) ) - (func $memory-fill-store + (func $memory-fill-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1823,7 +1823,7 @@ (local.get $x) ) ) - (func $data-drop-load + (func $data-drop-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1835,7 +1835,7 @@ (local.get $x) ) ) - (func $data-drop-store + (func $data-drop-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1851,7 +1851,7 @@ (local.get $x) ) ) - (func $data-drop-memory-init + (func $data-drop-memory-init (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1871,7 +1871,7 @@ ) (module (type $none_=>_anyref (func (result anyref))) - (func $subtype-test (result anyref) + (func $subtype-test (type $none_=>_anyref) (result anyref) (local $0 eqref) (local $1 anyref) (local $2 anyref) @@ -1887,7 +1887,7 @@ (memory $0 (shared 1 1)) (data "data") (export "foo" (func $0)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (local $0 i32) (local.set $0 (i32.rem_u @@ -1902,7 +1902,7 @@ (module (type $eqref_i31ref_=>_i32 (func (param eqref i31ref) (result i32))) (export "test" (func $0)) - (func $0 (param $0 eqref) (param $1 i31ref) (result i32) + (func $0 (type $eqref_i31ref_=>_i32) (param $0 eqref) (param $1 i31ref) (result i32) (local $2 eqref) (local $3 i31ref) (local.set $2 diff --git a/test/passes/simplify-locals_all-features_disable-exception-handling.txt b/test/passes/simplify-locals_all-features_disable-exception-handling.txt index 78e2804ac..2fd41b93f 100644 --- a/test/passes/simplify-locals_all-features_disable-exception-handling.txt +++ b/test/passes/simplify-locals_all-features_disable-exception-handling.txt @@ -20,7 +20,7 @@ (import "fuzzing-support" "log-f32" (func $fimport$0 (param f32))) (global $global$0 (mut i32) (i32.const 10)) (memory $0 256 256) - (func $contrast + (func $contrast (type $FUNCSIG$v) (local $x i32) (local $y i32) (local $z i32) @@ -82,7 +82,7 @@ ) ) ) - (func $b0-yes (param $i1 i32) + (func $b0-yes (type $4) (param $i1 i32) (local $x i32) (local $y i32) (local $a i32) @@ -400,7 +400,7 @@ ) ) ) - (func $Ia (param $a i32) (result i32) + (func $Ia (type $5) (param $a i32) (result i32) (local $b i32) (block $switch$0 (block $switch-default$6 @@ -411,7 +411,7 @@ (i32.const 60) ) ) - (func $memories (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) + (func $memories (type $6) (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) (local $set_with_no_get i32) (nop) (i32.store8 @@ -441,7 +441,7 @@ ) (nop) ) - (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) + (func $___remdi3 (type $FUNCSIG$iiiii) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$1$1 i32) (local $$1$0 i32) (local $$rem i32) @@ -634,7 +634,7 @@ ) ) ) - (func $block-returns + (func $block-returns (type $FUNCSIG$v) (local $x i32) (local.set $x (block $out (result i32) @@ -708,7 +708,7 @@ ) ) ) - (func $multiple (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) + (func $multiple (type $6) (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) (nop) (local.set $r (i32.add @@ -735,7 +735,7 @@ (local.get $t) ) ) - (func $switch-def (param $i3 i32) (result i32) + (func $switch-def (type $5) (param $i3 i32) (result i32) (local $i1 i32) (local.set $i1 (i32.const 10) @@ -754,7 +754,7 @@ (local.get $i1) ) ) - (func $no-out-of-label (param $x i32) (param $y i32) + (func $no-out-of-label (type $i32_i32_=>_none) (param $x i32) (param $y i32) (nop) (local.set $x (loop $moar (result i32) @@ -781,7 +781,7 @@ (local.get $y) ) ) - (func $freetype-cd (param $a i32) (result i32) + (func $freetype-cd (type $5) (param $a i32) (result i32) (local $e i32) (nop) (local.tee $a @@ -809,7 +809,7 @@ ) ) ) - (func $drop-if-value (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $drop-if-value (type $i32_i32_i32_=>_i32) (param $x i32) (param $y i32) (param $z i32) (result i32) (local $temp i32) (drop (if (result i32) @@ -837,7 +837,7 @@ (i32.const 0) ) ) - (func $drop-br_if (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) + (func $drop-br_if (type $i32_i32_i32_=>_i32) (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) (nop) (local.tee $label (block $label$break$L4 (result i32) @@ -869,7 +869,7 @@ ) ) ) - (func $drop-tee-unreachable + (func $drop-tee-unreachable (type $FUNCSIG$v) (local $x i32) (local.tee $x (unreachable) @@ -878,7 +878,7 @@ (local.get $x) ) ) - (func $if-return-but-unreachable (param $var$0 i64) + (func $if-return-but-unreachable (type $i64_=>_none) (param $var$0 i64) (if (unreachable) (drop @@ -889,7 +889,7 @@ ) ) ) - (func $if-one-side (result i32) + (func $if-one-side (type $FUNCSIG$i) (result i32) (local $x i32) (nop) (local.tee $x @@ -903,7 +903,7 @@ ) ) ) - (func $if-one-side-undo (result i32) + (func $if-one-side-undo (type $FUNCSIG$i) (result i32) (local $x i32) (local $y i32) (local.set $y @@ -921,7 +921,7 @@ ) (local.get $y) ) - (func $if-one-side-multi (param $0 i32) (result i32) + (func $if-one-side-multi (type $5) (param $0 i32) (result i32) (nop) (local.tee $0 (if (result i32) @@ -950,7 +950,7 @@ ) ) ) - (func $if-one-side-undo-but-its-a-tee (param $0 i32) (result i32) + (func $if-one-side-undo-but-its-a-tee (type $5) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1029,7 +1029,7 @@ ) (i32.const 0) ) - (func $splittable-ifs-multicycle (param $20 i32) (result i32) + (func $splittable-ifs-multicycle (type $5) (param $20 i32) (result i32) (nop) (local.tee $20 (if (result i32) @@ -1047,7 +1047,7 @@ ) ) ) - (func $update-getCounter (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) + (func $update-getCounter (type $i32_f64_f64_f32_i32_=>_f64) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) (global.set $global$0 (i32.sub (global.get $global$0) @@ -1131,7 +1131,7 @@ (import "fuzzing-support" "log3" (func $fimport$2 (param f32))) (global $global$0 (mut i32) (i32.const 10)) (memory $0 (shared 256 256)) - (func $nonatomics (result i32) + (func $nonatomics (type $FUNCSIG$i) (result i32) (local $x i32) (nop) (drop @@ -1143,7 +1143,7 @@ (i32.const 1024) ) ) - (func $nonatomic-growmem (result i32) + (func $nonatomic-growmem (type $FUNCSIG$i) (result i32) (local $x i32) (local.set $x (i32.load @@ -1159,7 +1159,7 @@ ) (local.get $x) ) - (func $atomics + (func $atomics (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.load @@ -1175,7 +1175,7 @@ (local.get $x) ) ) - (func $one-atomic + (func $one-atomic (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.load @@ -1191,7 +1191,7 @@ (local.get $x) ) ) - (func $other-atomic + (func $other-atomic (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.load @@ -1207,7 +1207,7 @@ (local.get $x) ) ) - (func $atomic-growmem (result i32) + (func $atomic-growmem (type $FUNCSIG$i) (result i32) (local $x i32) (local.set $x (i32.load @@ -1223,7 +1223,7 @@ ) (local.get $x) ) - (func $atomicrmw + (func $atomicrmw (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.rmw.add @@ -1240,7 +1240,7 @@ (local.get $x) ) ) - (func $atomic-cmpxchg + (func $atomic-cmpxchg (type $FUNCSIG$v) (local $x i32) (local.set $x (i32.atomic.rmw.cmpxchg @@ -1258,7 +1258,7 @@ (local.get $x) ) ) - (func $br-value-reordering (result i32) + (func $br-value-reordering (type $FUNCSIG$i) (result i32) (local $temp i32) (block $outside (loop $loop @@ -1281,7 +1281,7 @@ ) (unreachable) ) - (func $br-value-reordering-safe (result i32) + (func $br-value-reordering-safe (type $FUNCSIG$i) (result i32) (local $temp i32) (local.set $temp (block $outside (result i32) @@ -1307,7 +1307,7 @@ ) (unreachable) ) - (func $if-one-side-unreachable + (func $if-one-side-unreachable (type $FUNCSIG$v) (local $x i32) (block $out (drop @@ -1343,7 +1343,7 @@ ) ) ) - (func $if-one-side-unreachable-blocks + (func $if-one-side-unreachable-blocks (type $FUNCSIG$v) (local $x i32) (local $y i32) (block $out @@ -1394,7 +1394,7 @@ ) ) ) - (func $loop-value (param $x i32) (result i32) + (func $loop-value (type $5) (param $x i32) (result i32) (loop $loopy (unreachable) ) @@ -1404,7 +1404,7 @@ (i32.const 1) ) ) - (func $loop-loop-loopy-value (param $x i32) (result i32) + (func $loop-loop-loopy-value (type $5) (param $x i32) (result i32) (nop) (loop $loopy1 (result i32) (nop) @@ -1417,7 +1417,7 @@ ) ) ) - (func $loop-modified-during-main-pass-be-careful-fuzz (result i32) + (func $loop-modified-during-main-pass-be-careful-fuzz (type $FUNCSIG$i) (result i32) (local $0 i32) (nop) (if (result i32) @@ -1434,11 +1434,11 @@ ) ) ) - (func $loop-later (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-later (type $FUNCSIG$iiiiii) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (nop) (i32.const 0) ) - (func $pick + (func $pick (type $FUNCSIG$v) (local $x i32) (local $y i32) (local.set $x @@ -1461,7 +1461,7 @@ (local.get $y) ) ) - (func $pick-2 + (func $pick-2 (type $FUNCSIG$v) (local $x i32) (local $y i32) (local.set $y @@ -1484,7 +1484,7 @@ (local.get $x) ) ) - (func $many + (func $many (type $FUNCSIG$v) (local $x i32) (local $y i32) (local $z i32) @@ -1555,7 +1555,7 @@ (local.get $x) ) ) - (func $loop-copies (param $x i32) (param $y i32) + (func $loop-copies (type $i32_i32_=>_none) (param $x i32) (param $y i32) (loop $loop (nop) (drop @@ -1566,7 +1566,7 @@ ) ) ) - (func $proper-type (result f64) + (func $proper-type (type $none_=>_f64) (result f64) (local $var$0 i32) (local $var$2 f64) (local.set $var$0 @@ -1578,7 +1578,7 @@ ) (local.get $var$2) ) - (func $multi-pass-get-equivs-right (param $var$0 i32) (param $var$1 i32) (result f64) + (func $multi-pass-get-equivs-right (type $i32_i32_=>_f64) (param $var$0 i32) (param $var$1 i32) (result f64) (local $var$2 i32) (nop) (i32.store @@ -1591,7 +1591,7 @@ ) ) ) - (func $if-value-structure-equivalent (param $x i32) (result i32) + (func $if-value-structure-equivalent (type $5) (param $x i32) (result i32) (local $y i32) (nop) (local.tee $x @@ -1609,7 +1609,7 @@ ) ) ) - (func $set-tee-need-one-of-them (param $var$0 i32) (param $var$1 i32) (result i32) + (func $set-tee-need-one-of-them (type $i32_i32_=>_i32) (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (local $var$3 i32) (local.set $var$2 @@ -1622,7 +1622,7 @@ ) (local.get $var$2) ) - (func $loop-value-harder (result i32) + (func $loop-value-harder (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1675,7 +1675,7 @@ (i32.const -5417091) ) ) - (func $tee-chain (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) + (func $tee-chain (type $FUNCSIG$iiiiii) (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) (nop) (drop (i32.const 10) @@ -1709,7 +1709,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data "hello, there!") - (func $memory-init-load + (func $memory-init-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1725,7 +1725,7 @@ (local.get $x) ) ) - (func $memory-init-store + (func $memory-init-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1745,7 +1745,7 @@ (local.get $x) ) ) - (func $memory-copy-load + (func $memory-copy-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1761,7 +1761,7 @@ (local.get $x) ) ) - (func $memory-copy-store + (func $memory-copy-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1781,7 +1781,7 @@ (local.get $x) ) ) - (func $memory-fill-load + (func $memory-fill-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1797,7 +1797,7 @@ (local.get $x) ) ) - (func $memory-fill-store + (func $memory-fill-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1817,7 +1817,7 @@ (local.get $x) ) ) - (func $data-drop-load + (func $data-drop-load (type $none_=>_none) (local $x i32) (local.set $x (i32.load @@ -1829,7 +1829,7 @@ (local.get $x) ) ) - (func $data-drop-store + (func $data-drop-store (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1845,7 +1845,7 @@ (local.get $x) ) ) - (func $data-drop-memory-init + (func $data-drop-memory-init (type $none_=>_none) (local $x i32) (local.set $x (block (result i32) @@ -1865,7 +1865,7 @@ ) (module (type $none_=>_anyref (func (result anyref))) - (func $subtype-test (result anyref) + (func $subtype-test (type $none_=>_anyref) (result anyref) (local $0 i31ref) (local $1 anyref) (local $2 anyref) diff --git a/test/passes/strip-target-features_roundtrip_print-features_all-features.txt b/test/passes/strip-target-features_roundtrip_print-features_all-features.txt index 8e2d73001..29555b427 100644 --- a/test/passes/strip-target-features_roundtrip_print-features_all-features.txt +++ b/test/passes/strip-target-features_roundtrip_print-features_all-features.txt @@ -16,13 +16,13 @@ --enable-multi-memories (module (type $none_=>_v128_externref (func (result v128 externref))) - (func $foo (result v128 externref) + (func $foo (type $none_=>_v128_externref) (result v128 externref) (tuple.make (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) (ref.null noextern) ) ) - (func $bar (result v128 externref) + (func $bar (type $none_=>_v128_externref) (result v128 externref) (return_call $foo) ) ) diff --git a/test/passes/vacuum_all-features.txt b/test/passes/vacuum_all-features.txt index f15572cac..739a86158 100644 --- a/test/passes/vacuum_all-features.txt +++ b/test/passes/vacuum_all-features.txt @@ -9,10 +9,10 @@ (import "env" "int" (func $int (result i32))) (global $Int i32 (i32.const 0)) (memory $0 256 256) - (func $b + (func $b (type $0) (nop) ) - (func $l (result i32) + (func $l (type $3) (result i32) (local $x i32) (local $y i32) (local.set $x @@ -26,15 +26,15 @@ ) (local.get $x) ) - (func $loopy (param $0 i32) + (func $loopy (type $1) (param $0 i32) (nop) ) - (func $unary (result f32) + (func $unary (type $2) (result f32) (f32.abs (unreachable) ) ) - (func $binary (result f32) + (func $binary (type $2) (result f32) (drop (f32.add (unreachable) @@ -42,7 +42,7 @@ ) ) ) - (func $select (result i32) + (func $select (type $3) (result i32) (drop (select (unreachable) @@ -51,16 +51,16 @@ ) ) ) - (func $block-to-one + (func $block-to-one (type $0) (unreachable) ) - (func $recurse + (func $recurse (type $0) (nop) ) - (func $func-block + (func $func-block (type $0) (nop) ) - (func $Gu (param $b i32) (param $e f64) (param $l i32) (param $d i32) + (func $Gu (type $4) (param $b i32) (param $e f64) (param $l i32) (param $d i32) (if (if (result i32) (local.get $d) @@ -82,7 +82,7 @@ (unreachable) ) ) - (func $if-drop (result i32) + (func $if-drop (type $3) (result i32) (block $out (if (call $if-drop) @@ -101,7 +101,7 @@ ) (i32.const 1) ) - (func $drop-silly + (func $drop-silly (type $0) (drop (call $int) ) @@ -118,21 +118,21 @@ ) ) ) - (func $drop-get-global + (func $drop-get-global (type $0) (call $drop-get-global) ) - (func $relooperJumpThreading1 + (func $relooperJumpThreading1 (type $0) (local $$vararg_ptr5 i32) (local $$11 i32) (nop) ) - (func $relooperJumpThreading2 + (func $relooperJumpThreading2 (type $0) (nop) ) - (func $relooperJumpThreading3 + (func $relooperJumpThreading3 (type $0) (nop) ) - (func $if2drops (result i32) + (func $if2drops (type $3) (result i32) (drop (if (result i32) (call $if2drops) @@ -142,7 +142,7 @@ ) (i32.const 2) ) - (func $if2drops-different (result i32) + (func $if2drops-different (type $3) (result i32) (if (call $if2drops) (drop @@ -154,7 +154,7 @@ ) (i32.const 2) ) - (func $if-const (param $x i32) + (func $if-const (type $1) (param $x i32) (call $if-const (i32.const 3) ) @@ -165,7 +165,7 @@ (i32.const 7) ) ) - (func $drop-if-both-unreachable (param $0 i32) + (func $drop-if-both-unreachable (type $1) (param $0 i32) (block $out (drop (if (result i32) @@ -183,7 +183,7 @@ ) ) ) - (func $if-1-block (param $x i32) (result i32) + (func $if-1-block (type $i32_=>_i32) (param $x i32) (result i32) (block $out (if (local.get $x) @@ -197,7 +197,7 @@ ) (local.get $x) ) - (func $block-resize-br-gone + (func $block-resize-br-gone (type $0) (block $out (block $in (call $block-resize-br-gone) @@ -206,11 +206,11 @@ (return) ) ) - (func $block-unreachable-but-last-element-concrete + (func $block-unreachable-but-last-element-concrete (type $0) (local $2 i32) (nop) ) - (func $a + (func $a (type $0) (i32.store (i32.const 1) (i32.const 2) @@ -222,7 +222,7 @@ ) ) ) - (func $leave-block-even-if-br-not-taken (result f64) + (func $leave-block-even-if-br-not-taken (type $none_=>_f64) (result f64) (block $label$0 (result f64) (f64.store align=1 (i32.const 879179022) @@ -235,19 +235,19 @@ ) ) ) - (func $executed-if-in-block + (func $executed-if-in-block (type $0) (unreachable) ) - (func $executed-if-in-block2 + (func $executed-if-in-block2 (type $0) (unreachable) ) - (func $executed-if-in-block3 + (func $executed-if-in-block3 (type $0) (block $label$0 (br $label$0) ) (unreachable) ) - (func $load-may-have-side-effects (result i32) + (func $load-may-have-side-effects (type $3) (result i32) (i64.ge_s (block (result i64) (drop @@ -260,14 +260,14 @@ (i64.const 0) ) ) - (func $unary-binary-may-trap + (func $unary-binary-may-trap (type $0) (drop (i64.trunc_f32_u (f32.const 70847791997969805621592064) ) ) ) - (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed + (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed (type $0) (block $label$0 (loop $label$1 (drop @@ -280,21 +280,21 @@ ) ) ) - (func $if-arm-vanishes (result i32) + (func $if-arm-vanishes (type $3) (result i32) (block $label$0 (result i32) (br $label$0 (i32.const 1) ) ) ) - (func $if-arm-vanishes-2 (result i32) + (func $if-arm-vanishes-2 (type $3) (result i32) (block $label$0 (result i32) (br $label$0 (i32.const 1) ) ) ) - (func $nop-if-type-changes + (func $nop-if-type-changes (type $0) (local $0 i32) (nop) ) @@ -302,10 +302,10 @@ (module (type $0 (func (param i64))) (type $1 (func (param f32 i32) (result i32))) - (func $0 (param $0 i64) + (func $0 (type $0) (param $0 i64) (nop) ) - (func $1 (param $0 f32) (param $1 i32) (result i32) + (func $1 (type $1) (param $0 f32) (param $1 i32) (result i32) (drop (block $label$2 (result i64) (call $0 @@ -326,22 +326,22 @@ (global $global$1 (mut i32) (i32.const 0)) (memory $0 1 1) (export "compress" (func $3)) - (func $_deflate (param $0 i32) (result i32) + (func $_deflate (type $i32_=>_i32) (param $0 i32) (result i32) (call $_deflate (local.get $0) ) ) - (func $_deflateInit2_ (param $0 i32) (result i32) + (func $_deflateInit2_ (type $i32_=>_i32) (param $0 i32) (result i32) (call $_deflateInit2_ (local.get $0) ) ) - (func $_deflateEnd (param $0 i32) (result i32) + (func $_deflateEnd (type $i32_=>_i32) (param $0 i32) (result i32) (call $_deflateEnd (local.get $0) ) ) - (func $3 (param $0 i32) (param $1 i32) (param $2 i32) + (func $3 (type $i32_i32_i32_=>_none) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (global.get $global$1) @@ -437,14 +437,14 @@ ) (module (type $none_=>_none (func)) - (func $foo + (func $foo (type $none_=>_none) (nop) ) ) (module (type $none_=>_none (func)) (global $global$0 (mut i32) (i32.const 10)) - (func $1 + (func $1 (type $none_=>_none) (nop) ) ) diff --git a/test/polymorphic_stack.wast.from-wast b/test/polymorphic_stack.wast.from-wast index e9379f862..b420b3192 100644 --- a/test/polymorphic_stack.wast.from-wast +++ b/test/polymorphic_stack.wast.from-wast @@ -4,7 +4,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (import "env" "table" (table $timport$0 9 9 funcref)) - (func $break-and-binary (result i32) + (func $break-and-binary (type $none_=>_i32) (result i32) (block $x (result i32) (f32.add (br_if $x @@ -19,7 +19,7 @@ ) ) ) - (func $call-and-unary (param $0 i32) (result i32) + (func $call-and-unary (type $FUNCSIG$ii) (param $0 i32) (result i32) (drop (i64.eqz (call $call-and-unary @@ -43,7 +43,7 @@ ) ) ) - (func $tee (param $x i32) + (func $tee (type $i32_=>_none) (param $x i32) (local $y f32) (drop (i64.eqz @@ -60,7 +60,7 @@ ) ) ) - (func $tee2 + (func $tee2 (type $none_=>_none) (local $0 f32) (if (i32.const 259) @@ -69,7 +69,7 @@ ) ) ) - (func $select + (func $select (type $none_=>_none) (drop (i64.eqz (select @@ -80,7 +80,7 @@ ) ) ) - (func $untaken-break-should-have-value (result i32) + (func $untaken-break-should-have-value (type $none_=>_i32) (result i32) (block $x (result i32) (block (br_if $x @@ -90,7 +90,7 @@ ) ) ) - (func $unreachable-in-block-but-code-before (param $0 i32) (result i32) + (func $unreachable-in-block-but-code-before (type $FUNCSIG$ii) (param $0 i32) (result i32) (if (local.get $0) (return @@ -106,7 +106,7 @@ ) ) ) - (func $br_table_unreachable_to_also_unreachable (result i32) + (func $br_table_unreachable_to_also_unreachable (type $none_=>_i32) (result i32) (block $a (result i32) (block $b (result i32) (br_table $a $b @@ -116,7 +116,7 @@ ) ) ) - (func $untaken-br_if (result i32) + (func $untaken-br_if (type $none_=>_i32) (result i32) (block $label$8 (result i32) (block $label$9 (drop diff --git a/test/polymorphic_stack.wast.fromBinary b/test/polymorphic_stack.wast.fromBinary index 776db62ad..94ff7b2a5 100644 --- a/test/polymorphic_stack.wast.fromBinary +++ b/test/polymorphic_stack.wast.fromBinary @@ -4,29 +4,29 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (import "env" "table" (table $timport$0 9 9 funcref)) - (func $break-and-binary (result i32) + (func $break-and-binary (type $none_=>_i32) (result i32) (block $label$1 (result i32) (unreachable) ) ) - (func $call-and-unary (param $0 i32) (result i32) + (func $call-and-unary (type $FUNCSIG$ii) (param $0 i32) (result i32) (unreachable) ) - (func $tee (param $x i32) + (func $tee (type $i32_=>_none) (param $x i32) (local $y f32) (unreachable) ) - (func $tee2 + (func $tee2 (type $none_=>_none) (local $0 f32) (if (i32.const 259) (unreachable) ) ) - (func $select + (func $select (type $none_=>_none) (unreachable) ) - (func $untaken-break-should-have-value (result i32) + (func $untaken-break-should-have-value (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (drop @@ -37,7 +37,7 @@ (unreachable) ) ) - (func $unreachable-in-block-but-code-before (param $0 i32) (result i32) + (func $unreachable-in-block-but-code-before (type $FUNCSIG$ii) (param $0 i32) (result i32) (if (local.get $0) (return @@ -53,14 +53,14 @@ ) ) ) - (func $br_table_unreachable_to_also_unreachable (result i32) + (func $br_table_unreachable_to_also_unreachable (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (result i32) (unreachable) ) ) ) - (func $untaken-br_if (result i32) + (func $untaken-br_if (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (if diff --git a/test/polymorphic_stack.wast.fromBinary.noDebugInfo b/test/polymorphic_stack.wast.fromBinary.noDebugInfo index 5d08d3d60..1bc00bf13 100644 --- a/test/polymorphic_stack.wast.fromBinary.noDebugInfo +++ b/test/polymorphic_stack.wast.fromBinary.noDebugInfo @@ -4,29 +4,29 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (import "env" "table" (table $timport$0 9 9 funcref)) - (func $0 (result i32) + (func $0 (type $none_=>_i32) (result i32) (block $label$1 (result i32) (unreachable) ) ) - (func $1 (param $0 i32) (result i32) + (func $1 (type $i32_=>_i32) (param $0 i32) (result i32) (unreachable) ) - (func $2 (param $0 i32) + (func $2 (type $i32_=>_none) (param $0 i32) (local $1 f32) (unreachable) ) - (func $3 + (func $3 (type $none_=>_none) (local $0 f32) (if (i32.const 259) (unreachable) ) ) - (func $4 + (func $4 (type $none_=>_none) (unreachable) ) - (func $5 (result i32) + (func $5 (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (drop @@ -37,7 +37,7 @@ (unreachable) ) ) - (func $6 (param $0 i32) (result i32) + (func $6 (type $i32_=>_i32) (param $0 i32) (result i32) (if (local.get $0) (return @@ -53,14 +53,14 @@ ) ) ) - (func $7 (result i32) + (func $7 (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (result i32) (unreachable) ) ) ) - (func $8 (result i32) + (func $8 (type $none_=>_i32) (result i32) (block $label$1 (result i32) (block $label$2 (if diff --git a/test/print/min.minified.txt b/test/print/min.minified.txt index 214f9447b..545a2dcc1 100644 --- a/test/print/min.minified.txt +++ b/test/print/min.minified.txt @@ -1,4 +1,4 @@ (module(type $0 (func(param f32)(result f32)))(type $1 (func(param i32 i32)(result f32)))(type $2 (func(param i32)(result i32)))(type $3 (func(param i32 i32 i32)(result i32)))(memory $0 256 256) -(export "floats" (func $floats))(func $floats(param $f f32)(result f32)(local $t f32)(f32.add(local.get $t)(local.get $f)))(func $neg(param $k i32)(param $p i32)(result f32)(local $n f32)(local.tee $n(f32.neg(block $block0 (result f32)(i32.store(local.get $k)(local.get $p))(f32.load(local.get $k))))))(func $littleswitch(param $x i32)(result i32)(block $topmost (result i32)(block $switch-case$2(block $switch-case$1(br_table $switch-case$1 $switch-case$2 $switch-case$1(i32.sub(local.get $x)(i32.const 1)))) +(export "floats" (func $floats))(func $floats (type $0)(param $f f32)(result f32)(local $t f32)(f32.add(local.get $t)(local.get $f)))(func $neg (type $1)(param $k i32)(param $p i32)(result f32)(local $n f32)(local.tee $n(f32.neg(block $block0 (result f32)(i32.store(local.get $k)(local.get $p))(f32.load(local.get $k))))))(func $littleswitch (type $2)(param $x i32)(result i32)(block $topmost (result i32)(block $switch-case$2(block $switch-case$1(br_table $switch-case$1 $switch-case$2 $switch-case$1(i32.sub(local.get $x)(i32.const 1)))) (br $topmost(i32.const 1))) -(br $topmost(i32.const 2))(i32.const 0)))(func $f1(param $i1 i32)(param $i2 i32)(param $i3 i32)(result i32)(block $topmost (result i32)(local.get $i3))))
\ No newline at end of file +(br $topmost(i32.const 2))(i32.const 0)))(func $f1 (type $3)(param $i1 i32)(param $i2 i32)(param $i3 i32)(result i32)(block $topmost (result i32)(local.get $i3))))
\ No newline at end of file diff --git a/test/print/min.txt b/test/print/min.txt index f0c501672..d8de52edd 100644 --- a/test/print/min.txt +++ b/test/print/min.txt @@ -5,14 +5,14 @@ (type $3 (func (param i32 i32 i32) (result i32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (param $f f32) (result f32) + (func $floats (type $0) (param $f f32) (result f32) (local $t f32) (f32.add (local.get $t) (local.get $f) ) ) - (func $neg (param $k i32) (param $p i32) (result f32) + (func $neg (type $1) (param $k i32) (param $p i32) (result f32) (local $n f32) (local.tee $n (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $littleswitch (param $x i32) (result i32) + (func $littleswitch (type $2) (param $x i32) (result i32) (block $topmost (result i32) (block $switch-case$2 (block $switch-case$1 @@ -49,7 +49,7 @@ (i32.const 0) ) ) - (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (func $f1 (type $3) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) (block $topmost (result i32) (local.get $i3) ) diff --git a/test/reduce/imports.wast.txt b/test/reduce/imports.wast.txt index 1c2a8c63f..143240b49 100644 --- a/test/reduce/imports.wast.txt +++ b/test/reduce/imports.wast.txt @@ -1,5 +1,8 @@ (module - (type $none_=>_i32 (func (result i32))) + (rec + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + ) (export "x" (func $0)) (func $0 (result i32) (i32.const 5678) diff --git a/test/reduce/memory_table.wast.txt b/test/reduce/memory_table.wast.txt index fe9e82072..9da5e8739 100644 --- a/test/reduce/memory_table.wast.txt +++ b/test/reduce/memory_table.wast.txt @@ -1,6 +1,8 @@ (module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) + (rec + (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + ) (memory $0 256 256) (export "f1" (func $0)) (export "f2" (func $1)) diff --git a/test/reduce/simple.wast.txt b/test/reduce/simple.wast.txt index 1c2a8c63f..e621ce52a 100644 --- a/test/reduce/simple.wast.txt +++ b/test/reduce/simple.wast.txt @@ -1,5 +1,8 @@ (module - (type $none_=>_i32 (func (result i32))) + (rec + (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + ) (export "x" (func $0)) (func $0 (result i32) (i32.const 5678) diff --git a/test/reference-types.wast.from-wast b/test/reference-types.wast.from-wast index e3a04c760..52661704c 100644 --- a/test/reference-types.wast.from-wast +++ b/test/reference-types.wast.from-wast @@ -21,19 +21,19 @@ (tag $e-i32 (param i32)) (export "export_func" (func $import_func)) (export "export_global" (global $import_global)) - (func $take_eqref (param $0 eqref) + (func $take_eqref (type $sig_eqref) (param $0 eqref) (nop) ) - (func $take_funcref (param $0 funcref) + (func $take_funcref (type $sig_funcref) (param $0 funcref) (nop) ) - (func $take_anyref (param $0 anyref) + (func $take_anyref (type $sig_anyref) (param $0 anyref) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $test + (func $test (type $none_=>_none) (local $local_eqref eqref) (local $local_funcref funcref) (local $local_anyref anyref) @@ -544,50 +544,50 @@ ) ) ) - (func $return_eqref_local (result eqref) + (func $return_eqref_local (type $none_=>_eqref) (result eqref) (local $local_eqref eqref) (local.get $local_eqref) ) - (func $return_eqref_global (result eqref) + (func $return_eqref_global (type $none_=>_eqref) (result eqref) (global.get $global_eqref) ) - (func $return_eqref_null (result eqref) + (func $return_eqref_null (type $none_=>_eqref) (result eqref) (ref.null none) ) - (func $return_funcref_local (result funcref) + (func $return_funcref_local (type $none_=>_funcref) (result funcref) (local $local_funcref funcref) (local.get $local_funcref) ) - (func $return_funcref_global (result funcref) + (func $return_funcref_global (type $none_=>_funcref) (result funcref) (global.get $global_funcref) ) - (func $return_funcref_null (result funcref) + (func $return_funcref_null (type $none_=>_funcref) (result funcref) (ref.null nofunc) ) - (func $return_funcref_func (result funcref) + (func $return_funcref_func (type $none_=>_funcref) (result funcref) (ref.func $foo) ) - (func $return_anyref_local (result anyref) + (func $return_anyref_local (type $none_=>_anyref) (result anyref) (local $local_anyref anyref) (local.get $local_anyref) ) - (func $return_anyref_global (result anyref) + (func $return_anyref_global (type $none_=>_anyref) (result anyref) (global.get $global_anyref) ) - (func $return_anyref_null (result anyref) + (func $return_anyref_null (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $return_anyref2 (result anyref) + (func $return_anyref2 (type $none_=>_anyref) (result anyref) (local $local_eqref eqref) (local.get $local_eqref) ) - (func $return_anyref3 (result anyref) + (func $return_anyref3 (type $none_=>_anyref) (result anyref) (global.get $global_eqref) ) - (func $return_anyref4 (result anyref) + (func $return_anyref4 (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $returns_eqref (result eqref) + (func $returns_eqref (type $none_=>_eqref) (result eqref) (local $local_eqref eqref) (return (local.get $local_eqref) @@ -599,7 +599,7 @@ (ref.null none) ) ) - (func $returns_funcref (result funcref) + (func $returns_funcref (type $none_=>_funcref) (result funcref) (local $local_funcref funcref) (return (local.get $local_funcref) @@ -614,7 +614,7 @@ (ref.null nofunc) ) ) - (func $returns_anyref (result anyref) + (func $returns_anyref (type $none_=>_anyref) (result anyref) (local $local_anyref anyref) (return (local.get $local_anyref) @@ -626,7 +626,7 @@ (ref.null none) ) ) - (func $returns_anyref2 (result anyref) + (func $returns_anyref2 (type $none_=>_anyref) (result anyref) (local $local_eqref eqref) (local $local_funcref funcref) (return @@ -639,12 +639,12 @@ (ref.null none) ) ) - (func $ref-user + (func $ref-user (type $none_=>_none) (drop (ref.func $ref-taken-but-not-in-table) ) ) - (func $ref-taken-but-not-in-table + (func $ref-taken-but-not-in-table (type $none_=>_none) (nop) ) ) diff --git a/test/reference-types.wast.fromBinary b/test/reference-types.wast.fromBinary index 670645cf2..163c29d4a 100644 --- a/test/reference-types.wast.fromBinary +++ b/test/reference-types.wast.fromBinary @@ -21,19 +21,19 @@ (tag $e-i32 (param i32)) (export "export_func" (func $import_func)) (export "export_global" (global $import_global)) - (func $take_eqref (param $0 eqref) + (func $take_eqref (type $sig_eqref) (param $0 eqref) (nop) ) - (func $take_funcref (param $0 funcref) + (func $take_funcref (type $sig_funcref) (param $0 funcref) (nop) ) - (func $take_anyref (param $0 anyref) + (func $take_anyref (type $sig_anyref) (param $0 anyref) (nop) ) - (func $foo + (func $foo (type $none_=>_none) (nop) ) - (func $test + (func $test (type $none_=>_none) (local $local_eqref eqref) (local $local_funcref funcref) (local $local_anyref anyref) @@ -544,80 +544,80 @@ ) ) ) - (func $return_eqref_local (result eqref) + (func $return_eqref_local (type $none_=>_eqref) (result eqref) (local $local_eqref eqref) (local.get $local_eqref) ) - (func $return_eqref_global (result eqref) + (func $return_eqref_global (type $none_=>_eqref) (result eqref) (global.get $global_eqref) ) - (func $return_eqref_null (result eqref) + (func $return_eqref_null (type $none_=>_eqref) (result eqref) (ref.null none) ) - (func $return_funcref_local (result funcref) + (func $return_funcref_local (type $none_=>_funcref) (result funcref) (local $local_funcref funcref) (local.get $local_funcref) ) - (func $return_funcref_global (result funcref) + (func $return_funcref_global (type $none_=>_funcref) (result funcref) (global.get $global_funcref) ) - (func $return_funcref_null (result funcref) + (func $return_funcref_null (type $none_=>_funcref) (result funcref) (ref.null nofunc) ) - (func $return_funcref_func (result funcref) + (func $return_funcref_func (type $none_=>_funcref) (result funcref) (ref.func $foo) ) - (func $return_anyref_local (result anyref) + (func $return_anyref_local (type $none_=>_anyref) (result anyref) (local $local_anyref anyref) (local.get $local_anyref) ) - (func $return_anyref_global (result anyref) + (func $return_anyref_global (type $none_=>_anyref) (result anyref) (global.get $global_anyref) ) - (func $return_anyref_null (result anyref) + (func $return_anyref_null (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $return_anyref2 (result anyref) + (func $return_anyref2 (type $none_=>_anyref) (result anyref) (local $local_eqref eqref) (local.get $local_eqref) ) - (func $return_anyref3 (result anyref) + (func $return_anyref3 (type $none_=>_anyref) (result anyref) (global.get $global_eqref) ) - (func $return_anyref4 (result anyref) + (func $return_anyref4 (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $returns_eqref (result eqref) + (func $returns_eqref (type $none_=>_eqref) (result eqref) (local $local_eqref eqref) (return (local.get $local_eqref) ) ) - (func $returns_funcref (result funcref) + (func $returns_funcref (type $none_=>_funcref) (result funcref) (local $local_funcref funcref) (return (local.get $local_funcref) ) ) - (func $returns_anyref (result anyref) + (func $returns_anyref (type $none_=>_anyref) (result anyref) (local $local_anyref anyref) (return (local.get $local_anyref) ) ) - (func $returns_anyref2 (result anyref) + (func $returns_anyref2 (type $none_=>_anyref) (result anyref) (local $local_eqref eqref) (local $local_funcref funcref) (return (local.get $local_eqref) ) ) - (func $ref-user + (func $ref-user (type $none_=>_none) (drop (ref.func $ref-taken-but-not-in-table) ) ) - (func $ref-taken-but-not-in-table + (func $ref-taken-but-not-in-table (type $none_=>_none) (nop) ) ) diff --git a/test/reference-types.wast.fromBinary.noDebugInfo b/test/reference-types.wast.fromBinary.noDebugInfo index 85ebc9e9e..f4349a527 100644 --- a/test/reference-types.wast.fromBinary.noDebugInfo +++ b/test/reference-types.wast.fromBinary.noDebugInfo @@ -21,19 +21,19 @@ (tag $tag$0 (param i32)) (export "export_func" (func $fimport$0)) (export "export_global" (global $gimport$0)) - (func $0 (param $0 eqref) + (func $0 (type $eqref_=>_none) (param $0 eqref) (nop) ) - (func $1 (param $0 funcref) + (func $1 (type $funcref_=>_none) (param $0 funcref) (nop) ) - (func $2 (param $0 anyref) + (func $2 (type $anyref_=>_none) (param $0 anyref) (nop) ) - (func $3 + (func $3 (type $none_=>_none) (nop) ) - (func $4 + (func $4 (type $none_=>_none) (local $0 eqref) (local $1 funcref) (local $2 anyref) @@ -544,80 +544,80 @@ ) ) ) - (func $5 (result eqref) + (func $5 (type $none_=>_eqref) (result eqref) (local $0 eqref) (local.get $0) ) - (func $6 (result eqref) + (func $6 (type $none_=>_eqref) (result eqref) (global.get $global$0) ) - (func $7 (result eqref) + (func $7 (type $none_=>_eqref) (result eqref) (ref.null none) ) - (func $8 (result funcref) + (func $8 (type $none_=>_funcref) (result funcref) (local $0 funcref) (local.get $0) ) - (func $9 (result funcref) + (func $9 (type $none_=>_funcref) (result funcref) (global.get $global$1) ) - (func $10 (result funcref) + (func $10 (type $none_=>_funcref) (result funcref) (ref.null nofunc) ) - (func $11 (result funcref) + (func $11 (type $none_=>_funcref) (result funcref) (ref.func $3) ) - (func $12 (result anyref) + (func $12 (type $none_=>_anyref) (result anyref) (local $0 anyref) (local.get $0) ) - (func $13 (result anyref) + (func $13 (type $none_=>_anyref) (result anyref) (global.get $global$3) ) - (func $14 (result anyref) + (func $14 (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $15 (result anyref) + (func $15 (type $none_=>_anyref) (result anyref) (local $0 eqref) (local.get $0) ) - (func $16 (result anyref) + (func $16 (type $none_=>_anyref) (result anyref) (global.get $global$0) ) - (func $17 (result anyref) + (func $17 (type $none_=>_anyref) (result anyref) (ref.null none) ) - (func $18 (result eqref) + (func $18 (type $none_=>_eqref) (result eqref) (local $0 eqref) (return (local.get $0) ) ) - (func $19 (result funcref) + (func $19 (type $none_=>_funcref) (result funcref) (local $0 funcref) (return (local.get $0) ) ) - (func $20 (result anyref) + (func $20 (type $none_=>_anyref) (result anyref) (local $0 anyref) (return (local.get $0) ) ) - (func $21 (result anyref) + (func $21 (type $none_=>_anyref) (result anyref) (local $0 eqref) (local $1 funcref) (return (local.get $0) ) ) - (func $22 + (func $22 (type $none_=>_none) (drop (ref.func $23) ) ) - (func $23 + (func $23 (type $none_=>_none) (nop) ) ) diff --git a/test/reg_switch.wast.from-wast b/test/reg_switch.wast.from-wast index 74b69d9b0..a76690804 100644 --- a/test/reg_switch.wast.from-wast +++ b/test/reg_switch.wast.from-wast @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 0) - (func $0 + (func $0 (type $0) (if (i32.const 0) (block $A diff --git a/test/reg_switch.wast.fromBinary b/test/reg_switch.wast.fromBinary index 8cbd99645..00b78d79c 100644 --- a/test/reg_switch.wast.fromBinary +++ b/test/reg_switch.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $0 (func)) (memory $0 0) - (func $0 + (func $0 (type $0) (if (i32.const 0) (block $label$2 diff --git a/test/reg_switch.wast.fromBinary.noDebugInfo b/test/reg_switch.wast.fromBinary.noDebugInfo index 3cd9a0793..5ce002075 100644 --- a/test/reg_switch.wast.fromBinary.noDebugInfo +++ b/test/reg_switch.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $0 + (func $0 (type $none_=>_none) (if (i32.const 0) (block $label$2 diff --git a/test/signext.wast.from-wast b/test/signext.wast.from-wast index c26938c06..128bf5b11 100644 --- a/test/signext.wast.from-wast +++ b/test/signext.wast.from-wast @@ -1,6 +1,6 @@ (module (type $0 (func)) - (func $signext + (func $signext (type $0) (local $0 i32) (local $1 i64) (drop diff --git a/test/signext.wast.fromBinary b/test/signext.wast.fromBinary index bb1f2bcf3..55b8b92eb 100644 --- a/test/signext.wast.fromBinary +++ b/test/signext.wast.fromBinary @@ -1,6 +1,6 @@ (module (type $0 (func)) - (func $signext + (func $signext (type $0) (local $0 i32) (local $1 i64) (drop diff --git a/test/signext.wast.fromBinary.noDebugInfo b/test/signext.wast.fromBinary.noDebugInfo index f93d702b8..d37ea9aab 100644 --- a/test/signext.wast.fromBinary.noDebugInfo +++ b/test/signext.wast.fromBinary.noDebugInfo @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 + (func $0 (type $none_=>_none) (local $0 i32) (local $1 i64) (drop diff --git a/test/simd.wast.from-wast b/test/simd.wast.from-wast index 729706286..a8eefccbe 100644 --- a/test/simd.wast.from-wast +++ b/test/simd.wast.from-wast @@ -17,1371 +17,1371 @@ (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (memory $0 1 1) - (func $v128.load (param $0 i32) (result v128) + (func $v128.load (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i32) (result v128) + (func $v128.load8x8_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i32) (result v128) + (func $v128.load8x8_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i32) (result v128) + (func $v128.load16x4_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i32) (result v128) + (func $v128.load16x4_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i32) (result v128) + (func $v128.load32x2_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i32) (result v128) + (func $v128.load32x2_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $v128.load8_splat (param $0 i32) (result v128) + (func $v128.load8_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $v128.load16_splat (param $0 i32) (result v128) + (func $v128.load16_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $v128.load32_splat (param $0 i32) (result v128) + (func $v128.load32_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $v128.load64_splat (param $0 i32) (result v128) + (func $v128.load64_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $v128.store (param $0 i32) (param $1 v128) + (func $v128.store (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.const.i8x16 (result v128) + (func $v128.const.i8x16 (type $none_=>_v128) (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.const.i16x8 (result v128) + (func $v128.const.i16x8 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $v128.const.i32x4 (result v128) + (func $v128.const.i32x4 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $v128.const.i64x2 (result v128) + (func $v128.const.i64x2 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $v128.const.f32x4 (result v128) + (func $v128.const.f32x4 (type $none_=>_v128) (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $v128.const.f64x2 (result v128) + (func $v128.const.f64x2 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $i8x16.shuffle (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.shuffle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.swizzle (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.swizzle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.swizzle (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (param $0 i32) (result v128) + (func $i8x16.splat (type $i32_=>_v128) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i16x8.splat (param $0 i32) (result v128) + (func $i16x8.splat (type $i32_=>_v128) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $f32x4.splat (param $0 f32) (result v128) + (func $f32x4.splat (type $f32_=>_v128) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f64x2.splat (param $0 f64) (result v128) + (func $f64x2.splat (type $f64_=>_v128) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.extract_lane_s (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.extract_lane (param $0 v128) (result i32) + (func $i32x4.extract_lane (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (param $0 v128) (result i64) + (func $i64x2.extract_lane (type $v128_=>_i64) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (type $v128_i64_=>_v128) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.extract_lane (param $0 v128) (result f32) + (func $f32x4.extract_lane (type $v128_=>_f32) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (type $v128_f32_=>_v128) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.extract_lane (param $0 v128) (result f64) + (func $f64x2.extract_lane (type $v128_=>_f64) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (type $v128_f64_=>_v128) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (param $0 v128) (result v128) + (func $v128.not (type $v128_=>_v128) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.andnot (param $0 v128) (param $1 v128) (result v128) + (func $v128.andnot (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $v128.or (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $v128.any_true (param $0 v128) (result i32) + (func $v128.any_true (type $v128_=>_i32) (param $0 v128) (result i32) (v128.any_true (local.get $0) ) ) - (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane (param $0 i32) (param $1 v128) + (func $v128.store8_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane (param $0 i32) (param $1 v128) + (func $v128.store16_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane (param $0 i32) (param $1 v128) + (func $v128.store32_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane (param $0 i32) (param $1 v128) + (func $v128.store64_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_zero (param $0 i32) (result v128) + (func $v128.load32_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $v128.load64_zero (param $0 i32) (result v128) + (func $v128.load64_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero (local.get $0) ) ) - (func $f32x4.demote_f64x2_zero (param $0 v128) (result v128) + (func $f32x4.demote_f64x2_zero (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.demote_f64x2_zero (local.get $0) ) ) - (func $f64x2.promote_low_f32x4 (param $0 v128) (result v128) + (func $f64x2.promote_low_f32x4 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.promote_low_f32x4 (local.get $0) ) ) - (func $i8x16.abs (param $0 v128) (result v128) + (func $i8x16.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.abs (local.get $0) ) ) - (func $i8x16.neg (param $0 v128) (result v128) + (func $i8x16.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.popcnt (param $0 v128) (result v128) + (func $i8x16.popcnt (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.popcnt (local.get $0) ) ) - (func $i8x16.all_true (param $0 v128) (result i32) + (func $i8x16.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.bitmask (param $0 v128) (result i32) + (func $i8x16.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.bitmask (local.get $0) ) ) - (func $i8x16.narrow_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i8x16.narrow_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $f32x4.ceil (param $0 v128) (result v128) + (func $f32x4.ceil (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.ceil (local.get $0) ) ) - (func $f32x4.floor (param $0 v128) (result v128) + (func $f32x4.floor (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.floor (local.get $0) ) ) - (func $f32x4.trunc (param $0 v128) (result v128) + (func $f32x4.trunc (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.trunc (local.get $0) ) ) - (func $f32x4.nearest (param $0 v128) (result v128) + (func $f32x4.nearest (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.nearest (local.get $0) ) ) - (func $i8x16.shl (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $f64x2.ceil (param $0 v128) (result v128) + (func $f64x2.ceil (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.ceil (local.get $0) ) ) - (func $f64x2.floor (param $0 v128) (result v128) + (func $f64x2.floor (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.floor (local.get $0) ) ) - (func $i8x16.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $i8x16.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $i8x16.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $i8x16.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $f64x2.trunc (param $0 v128) (result v128) + (func $f64x2.trunc (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.trunc (local.get $0) ) ) - (func $i8x16.avgr_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.avgr_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_s (local.get $0) ) ) - (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_u (local.get $0) ) ) - (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extadd_pairwise_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_s (local.get $0) ) ) - (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extadd_pairwise_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_u (local.get $0) ) ) - (func $i16x8.abs (param $0 v128) (result v128) + (func $i16x8.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.abs (local.get $0) ) ) - (func $i16x8.neg (param $0 v128) (result v128) + (func $i16x8.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.q15mulr_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.q15mulr_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.q15mulr_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.all_true (param $0 v128) (result i32) + (func $i16x8.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.bitmask (param $0 v128) (result i32) + (func $i16x8.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.bitmask (local.get $0) ) ) - (func $i16x8.narrow_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extend_low_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extend_low_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_s (local.get $0) ) ) - (func $i16x8.extend_high_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extend_high_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_s (local.get $0) ) ) - (func $i16x8.extend_low_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extend_low_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_u (local.get $0) ) ) - (func $i16x8.extend_high_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extend_high_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_u (local.get $0) ) ) - (func $i16x8.shl (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $f64x2.nearest (param $0 v128) (result v128) + (func $f64x2.nearest (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.nearest (local.get $0) ) ) - (func $i16x8.mul (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $i16x8.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $i16x8.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $i16x8.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $i16x8.avgr_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.avgr_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_low_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_low_i8x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_s (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_high_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_high_i8x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_s (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_low_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_low_i8x16_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_high_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_high_i8x16_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_u (local.get $0) (local.get $1) ) ) - (func $i32x4.abs (param $0 v128) (result v128) + (func $i32x4.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.abs (local.get $0) ) ) - (func $i32x4.neg (param $0 v128) (result v128) + (func $i32x4.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.all_true (param $0 v128) (result i32) + (func $i32x4.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.bitmask (param $0 v128) (result i32) + (func $i32x4.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.bitmask (local.get $0) ) ) - (func $i32x4.extend_low_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extend_low_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_s (local.get $0) ) ) - (func $i32x4.extend_high_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extend_high_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_s (local.get $0) ) ) - (func $i32x4.extend_low_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extend_low_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_u (local.get $0) ) ) - (func $i32x4.extend_high_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extend_high_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_u (local.get $0) ) ) - (func $i32x4.shl (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $i32x4.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $i32x4.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $i32x4.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $i32x4.dot_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.dot_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_low_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_low_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_high_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_high_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_low_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_low_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_high_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_high_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i64x2.abs (param $0 v128) (result v128) + (func $i64x2.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.abs (local.get $0) ) ) - (func $i64x2.neg (param $0 v128) (result v128) + (func $i64x2.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $i64x2.all_true (param $0 v128) (result i32) + (func $i64x2.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $i64x2.bitmask (param $0 v128) (result i32) + (func $i64x2.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.bitmask (local.get $0) ) ) - (func $i64x2.extend_low_i32x4_s (param $0 v128) (result v128) + (func $i64x2.extend_low_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_s (local.get $0) ) ) - (func $i64x2.extend_high_i32x4_s (param $0 v128) (result v128) + (func $i64x2.extend_high_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_s (local.get $0) ) ) - (func $i64x2.extend_low_i32x4_u (param $0 v128) (result v128) + (func $i64x2.extend_low_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_u (local.get $0) ) ) - (func $i64x2.extend_high_i32x4_u (param $0 v128) (result v128) + (func $i64x2.extend_high_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_u (local.get $0) ) ) - (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1) ) ) - (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1) ) ) - (func $i64x2.ne (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ne (local.get $0) (local.get $1) ) ) - (func $i64x2.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.lt_s (local.get $0) (local.get $1) ) ) - (func $i64x2.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.gt_s (local.get $0) (local.get $1) ) ) - (func $i64x2.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.le_s (local.get $0) (local.get $1) ) ) - (func $i64x2.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ge_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_low_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_low_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_high_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_high_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_low_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_low_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_high_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_high_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_u (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (param $0 v128) (result v128) + (func $f32x4.abs (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (param $0 v128) (result v128) + (func $f32x4.neg (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (param $0 v128) (result v128) + (func $f32x4.sqrt (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f32x4.add (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.pmin (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.pmin (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1) ) ) - (func $f32x4.pmax (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.pmax (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (param $0 v128) (result v128) + (func $f64x2.abs (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (param $0 v128) (result v128) + (func $f64x2.neg (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (param $0 v128) (result v128) + (func $f64x2.sqrt (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $f64x2.add (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.pmin (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.pmin (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1) ) ) - (func $f64x2.pmax (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.pmax (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1) ) ) - (func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $i32x4.trunc_sat_f64x2_s_zero (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f64x2_s_zero (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_s_zero (local.get $0) ) ) - (func $i32x4.trunc_sat_f64x2_u_zero (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f64x2_u_zero (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_u_zero (local.get $0) ) ) - (func $f64x2.convert_low_i32x4_s (param $0 v128) (result v128) + (func $f64x2.convert_low_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_s (local.get $0) ) ) - (func $f64x2.convert_low_i32x4_u (param $0 v128) (result v128) + (func $f64x2.convert_low_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_u (local.get $0) ) diff --git a/test/simd.wast.fromBinary b/test/simd.wast.fromBinary index abcfd024e..1bfd3b2b5 100644 --- a/test/simd.wast.fromBinary +++ b/test/simd.wast.fromBinary @@ -17,1371 +17,1371 @@ (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (memory $0 1 1) - (func $v128.load (param $0 i32) (result v128) + (func $v128.load (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i32) (result v128) + (func $v128.load8x8_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i32) (result v128) + (func $v128.load8x8_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i32) (result v128) + (func $v128.load16x4_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i32) (result v128) + (func $v128.load16x4_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i32) (result v128) + (func $v128.load32x2_s (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i32) (result v128) + (func $v128.load32x2_u (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $v128.load8_splat (param $0 i32) (result v128) + (func $v128.load8_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $v128.load16_splat (param $0 i32) (result v128) + (func $v128.load16_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $v128.load32_splat (param $0 i32) (result v128) + (func $v128.load32_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $v128.load64_splat (param $0 i32) (result v128) + (func $v128.load64_splat (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $v128.store (param $0 i32) (param $1 v128) + (func $v128.store (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.const.i8x16 (result v128) + (func $v128.const.i8x16 (type $none_=>_v128) (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.const.i16x8 (result v128) + (func $v128.const.i16x8 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $v128.const.i32x4 (result v128) + (func $v128.const.i32x4 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $v128.const.i64x2 (result v128) + (func $v128.const.i64x2 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $v128.const.f32x4 (result v128) + (func $v128.const.f32x4 (type $none_=>_v128) (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $v128.const.f64x2 (result v128) + (func $v128.const.f64x2 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $i8x16.shuffle (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.shuffle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.swizzle (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.swizzle (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.swizzle (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (param $0 i32) (result v128) + (func $i8x16.splat (type $i32_=>_v128) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i16x8.splat (param $0 i32) (result v128) + (func $i16x8.splat (type $i32_=>_v128) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $f32x4.splat (param $0 f32) (result v128) + (func $f32x4.splat (type $f32_=>_v128) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f64x2.splat (param $0 f64) (result v128) + (func $f64x2.splat (type $f64_=>_v128) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.extract_lane_s (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.extract_lane (param $0 v128) (result i32) + (func $i32x4.extract_lane (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (param $0 v128) (result i64) + (func $i64x2.extract_lane (type $v128_=>_i64) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (type $v128_i64_=>_v128) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.extract_lane (param $0 v128) (result f32) + (func $f32x4.extract_lane (type $v128_=>_f32) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (type $v128_f32_=>_v128) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.extract_lane (param $0 v128) (result f64) + (func $f64x2.extract_lane (type $v128_=>_f64) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (type $v128_f64_=>_v128) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (param $0 v128) (result v128) + (func $v128.not (type $v128_=>_v128) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.andnot (param $0 v128) (param $1 v128) (result v128) + (func $v128.andnot (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $v128.or (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $v128.any_true (param $0 v128) (result i32) + (func $v128.any_true (type $v128_=>_i32) (param $0 v128) (result i32) (v128.any_true (local.get $0) ) ) - (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load8_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load16_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load32_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (func $v128.load64_lane_align_offset (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store8_lane (param $0 i32) (param $1 v128) + (func $v128.store8_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store16_lane (param $0 i32) (param $1 v128) + (func $v128.store16_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store32_lane (param $0 i32) (param $1 v128) + (func $v128.store32_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane (param $0 i32) (param $1 v128) + (func $v128.store64_lane (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (func $v128.store64_lane_align_offset (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $v128.load32_zero (param $0 i32) (result v128) + (func $v128.load32_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $v128.load64_zero (param $0 i32) (result v128) + (func $v128.load64_zero (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero (local.get $0) ) ) - (func $f32x4.demote_f64x2_zero (param $0 v128) (result v128) + (func $f32x4.demote_f64x2_zero (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.demote_f64x2_zero (local.get $0) ) ) - (func $f64x2.promote_low_f32x4 (param $0 v128) (result v128) + (func $f64x2.promote_low_f32x4 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.promote_low_f32x4 (local.get $0) ) ) - (func $i8x16.abs (param $0 v128) (result v128) + (func $i8x16.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.abs (local.get $0) ) ) - (func $i8x16.neg (param $0 v128) (result v128) + (func $i8x16.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.popcnt (param $0 v128) (result v128) + (func $i8x16.popcnt (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.popcnt (local.get $0) ) ) - (func $i8x16.all_true (param $0 v128) (result i32) + (func $i8x16.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.bitmask (param $0 v128) (result i32) + (func $i8x16.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.bitmask (local.get $0) ) ) - (func $i8x16.narrow_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i8x16.narrow_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $f32x4.ceil (param $0 v128) (result v128) + (func $f32x4.ceil (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.ceil (local.get $0) ) ) - (func $f32x4.floor (param $0 v128) (result v128) + (func $f32x4.floor (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.floor (local.get $0) ) ) - (func $f32x4.trunc (param $0 v128) (result v128) + (func $f32x4.trunc (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.trunc (local.get $0) ) ) - (func $f32x4.nearest (param $0 v128) (result v128) + (func $f32x4.nearest (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.nearest (local.get $0) ) ) - (func $i8x16.shl (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $f64x2.ceil (param $0 v128) (result v128) + (func $f64x2.ceil (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.ceil (local.get $0) ) ) - (func $f64x2.floor (param $0 v128) (result v128) + (func $f64x2.floor (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.floor (local.get $0) ) ) - (func $i8x16.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $i8x16.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $i8x16.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $i8x16.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $f64x2.trunc (param $0 v128) (result v128) + (func $f64x2.trunc (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.trunc (local.get $0) ) ) - (func $i8x16.avgr_u (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.avgr_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_s (local.get $0) ) ) - (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_u (local.get $0) ) ) - (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extadd_pairwise_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_s (local.get $0) ) ) - (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extadd_pairwise_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_u (local.get $0) ) ) - (func $i16x8.abs (param $0 v128) (result v128) + (func $i16x8.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.abs (local.get $0) ) ) - (func $i16x8.neg (param $0 v128) (result v128) + (func $i16x8.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.q15mulr_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.q15mulr_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.q15mulr_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.all_true (param $0 v128) (result i32) + (func $i16x8.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.bitmask (param $0 v128) (result i32) + (func $i16x8.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.bitmask (local.get $0) ) ) - (func $i16x8.narrow_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extend_low_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extend_low_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_s (local.get $0) ) ) - (func $i16x8.extend_high_i8x16_s (param $0 v128) (result v128) + (func $i16x8.extend_high_i8x16_s (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_s (local.get $0) ) ) - (func $i16x8.extend_low_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extend_low_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_u (local.get $0) ) ) - (func $i16x8.extend_high_i8x16_u (param $0 v128) (result v128) + (func $i16x8.extend_high_i8x16_u (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_u (local.get $0) ) ) - (func $i16x8.shl (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_sat_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_sat_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_sat_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_sat_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $f64x2.nearest (param $0 v128) (result v128) + (func $f64x2.nearest (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.nearest (local.get $0) ) ) - (func $i16x8.mul (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $i16x8.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $i16x8.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $i16x8.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $i16x8.avgr_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.avgr_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_low_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_low_i8x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_s (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_high_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_high_i8x16_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_s (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_low_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_low_i8x16_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_u (local.get $0) (local.get $1) ) ) - (func $i16x8.extmul_high_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.extmul_high_i8x16_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_u (local.get $0) (local.get $1) ) ) - (func $i32x4.abs (param $0 v128) (result v128) + (func $i32x4.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.abs (local.get $0) ) ) - (func $i32x4.neg (param $0 v128) (result v128) + (func $i32x4.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.all_true (param $0 v128) (result i32) + (func $i32x4.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.bitmask (param $0 v128) (result i32) + (func $i32x4.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.bitmask (local.get $0) ) ) - (func $i32x4.extend_low_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extend_low_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_s (local.get $0) ) ) - (func $i32x4.extend_high_i16x8_s (param $0 v128) (result v128) + (func $i32x4.extend_high_i16x8_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_s (local.get $0) ) ) - (func $i32x4.extend_low_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extend_low_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_u (local.get $0) ) ) - (func $i32x4.extend_high_i16x8_u (param $0 v128) (result v128) + (func $i32x4.extend_high_i16x8_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_u (local.get $0) ) ) - (func $i32x4.shl (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.min_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $i32x4.min_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $i32x4.max_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $i32x4.max_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $i32x4.dot_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.dot_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_low_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_low_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_high_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_high_i16x8_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_low_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_low_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i32x4.extmul_high_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.extmul_high_i16x8_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i64x2.abs (param $0 v128) (result v128) + (func $i64x2.abs (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.abs (local.get $0) ) ) - (func $i64x2.neg (param $0 v128) (result v128) + (func $i64x2.neg (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $i64x2.all_true (param $0 v128) (result i32) + (func $i64x2.all_true (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $i64x2.bitmask (param $0 v128) (result i32) + (func $i64x2.bitmask (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.bitmask (local.get $0) ) ) - (func $i64x2.extend_low_i32x4_s (param $0 v128) (result v128) + (func $i64x2.extend_low_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_s (local.get $0) ) ) - (func $i64x2.extend_high_i32x4_s (param $0 v128) (result v128) + (func $i64x2.extend_high_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_s (local.get $0) ) ) - (func $i64x2.extend_low_i32x4_u (param $0 v128) (result v128) + (func $i64x2.extend_low_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_u (local.get $0) ) ) - (func $i64x2.extend_high_i32x4_u (param $0 v128) (result v128) + (func $i64x2.extend_high_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_u (local.get $0) ) ) - (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1) ) ) - (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.eq (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1) ) ) - (func $i64x2.ne (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.ne (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ne (local.get $0) (local.get $1) ) ) - (func $i64x2.lt_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.lt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.lt_s (local.get $0) (local.get $1) ) ) - (func $i64x2.gt_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.gt_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.gt_s (local.get $0) (local.get $1) ) ) - (func $i64x2.le_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.le_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.le_s (local.get $0) (local.get $1) ) ) - (func $i64x2.ge_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.ge_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ge_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_low_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_low_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_high_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_high_i32x4_s (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_low_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_low_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i64x2.extmul_high_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.extmul_high_i32x4_u (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_u (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (param $0 v128) (result v128) + (func $f32x4.abs (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (param $0 v128) (result v128) + (func $f32x4.neg (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (param $0 v128) (result v128) + (func $f32x4.sqrt (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f32x4.add (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.pmin (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.pmin (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1) ) ) - (func $f32x4.pmax (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.pmax (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (param $0 v128) (result v128) + (func $f64x2.abs (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (param $0 v128) (result v128) + (func $f64x2.neg (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (param $0 v128) (result v128) + (func $f64x2.sqrt (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $f64x2.add (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.pmin (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.pmin (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1) ) ) - (func $f64x2.pmax (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.pmax (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1) ) ) - (func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $i32x4.trunc_sat_f64x2_s_zero (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f64x2_s_zero (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_s_zero (local.get $0) ) ) - (func $i32x4.trunc_sat_f64x2_u_zero (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f64x2_u_zero (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_u_zero (local.get $0) ) ) - (func $f64x2.convert_low_i32x4_s (param $0 v128) (result v128) + (func $f64x2.convert_low_i32x4_s (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_s (local.get $0) ) ) - (func $f64x2.convert_low_i32x4_u (param $0 v128) (result v128) + (func $f64x2.convert_low_i32x4_u (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_u (local.get $0) ) diff --git a/test/simd.wast.fromBinary.noDebugInfo b/test/simd.wast.fromBinary.noDebugInfo index 0567be049..db46e7564 100644 --- a/test/simd.wast.fromBinary.noDebugInfo +++ b/test/simd.wast.fromBinary.noDebugInfo @@ -17,1371 +17,1371 @@ (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (memory $0 1 1) - (func $0 (param $0 i32) (result v128) + (func $0 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $1 (param $0 i32) (result v128) + (func $1 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $2 (param $0 i32) (result v128) + (func $2 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $3 (param $0 i32) (result v128) + (func $3 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $4 (param $0 i32) (result v128) + (func $4 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $5 (param $0 i32) (result v128) + (func $5 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $6 (param $0 i32) (result v128) + (func $6 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $7 (param $0 i32) (result v128) + (func $7 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $8 (param $0 i32) (result v128) + (func $8 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $9 (param $0 i32) (result v128) + (func $9 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $10 (param $0 i32) (result v128) + (func $10 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $11 (param $0 i32) (param $1 v128) + (func $11 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $12 (result v128) + (func $12 (type $none_=>_v128) (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $13 (result v128) + (func $13 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $14 (result v128) + (func $14 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $15 (result v128) + (func $15 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $16 (result v128) + (func $16 (type $none_=>_v128) (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $17 (result v128) + (func $17 (type $none_=>_v128) (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $18 (param $0 v128) (param $1 v128) (result v128) + (func $18 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $19 (param $0 v128) (param $1 v128) (result v128) + (func $19 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.swizzle (local.get $0) (local.get $1) ) ) - (func $20 (param $0 i32) (result v128) + (func $20 (type $i32_=>_v128) (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $21 (param $0 i32) (result v128) + (func $21 (type $i32_=>_v128) (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $22 (param $0 f32) (result v128) + (func $22 (type $f32_=>_v128) (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $23 (param $0 f64) (result v128) + (func $23 (type $f64_=>_v128) (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $24 (param $0 v128) (result i32) + (func $24 (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $25 (param $0 v128) (result i32) + (func $25 (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $26 (param $0 v128) (param $1 i32) (result v128) + (func $26 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $27 (param $0 v128) (result i32) + (func $27 (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $28 (param $0 v128) (result i32) + (func $28 (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $29 (param $0 v128) (param $1 i32) (result v128) + (func $29 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $30 (param $0 v128) (result i32) + (func $30 (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $31 (param $0 v128) (param $1 i32) (result v128) + (func $31 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $32 (param $0 v128) (result i64) + (func $32 (type $v128_=>_i64) (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $33 (param $0 v128) (param $1 i64) (result v128) + (func $33 (type $v128_i64_=>_v128) (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $34 (param $0 v128) (result f32) + (func $34 (type $v128_=>_f32) (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $35 (param $0 v128) (param $1 f32) (result v128) + (func $35 (type $v128_f32_=>_v128) (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $36 (param $0 v128) (result f64) + (func $36 (type $v128_=>_f64) (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $37 (param $0 v128) (param $1 f64) (result v128) + (func $37 (type $v128_f64_=>_v128) (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $38 (param $0 v128) (param $1 v128) (result v128) + (func $38 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $39 (param $0 v128) (param $1 v128) (result v128) + (func $39 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $40 (param $0 v128) (param $1 v128) (result v128) + (func $40 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $41 (param $0 v128) (param $1 v128) (result v128) + (func $41 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $42 (param $0 v128) (param $1 v128) (result v128) + (func $42 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $43 (param $0 v128) (param $1 v128) (result v128) + (func $43 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $44 (param $0 v128) (param $1 v128) (result v128) + (func $44 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $45 (param $0 v128) (param $1 v128) (result v128) + (func $45 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $46 (param $0 v128) (param $1 v128) (result v128) + (func $46 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $47 (param $0 v128) (param $1 v128) (result v128) + (func $47 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $48 (param $0 v128) (param $1 v128) (result v128) + (func $48 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $49 (param $0 v128) (param $1 v128) (result v128) + (func $49 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $50 (param $0 v128) (param $1 v128) (result v128) + (func $50 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $51 (param $0 v128) (param $1 v128) (result v128) + (func $51 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $52 (param $0 v128) (param $1 v128) (result v128) + (func $52 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $53 (param $0 v128) (param $1 v128) (result v128) + (func $53 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $54 (param $0 v128) (param $1 v128) (result v128) + (func $54 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $55 (param $0 v128) (param $1 v128) (result v128) + (func $55 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $56 (param $0 v128) (param $1 v128) (result v128) + (func $56 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $57 (param $0 v128) (param $1 v128) (result v128) + (func $57 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $58 (param $0 v128) (param $1 v128) (result v128) + (func $58 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $59 (param $0 v128) (param $1 v128) (result v128) + (func $59 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $60 (param $0 v128) (param $1 v128) (result v128) + (func $60 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $61 (param $0 v128) (param $1 v128) (result v128) + (func $61 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $62 (param $0 v128) (param $1 v128) (result v128) + (func $62 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $63 (param $0 v128) (param $1 v128) (result v128) + (func $63 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $64 (param $0 v128) (param $1 v128) (result v128) + (func $64 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $65 (param $0 v128) (param $1 v128) (result v128) + (func $65 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $66 (param $0 v128) (param $1 v128) (result v128) + (func $66 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $67 (param $0 v128) (param $1 v128) (result v128) + (func $67 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $68 (param $0 v128) (param $1 v128) (result v128) + (func $68 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $69 (param $0 v128) (param $1 v128) (result v128) + (func $69 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $70 (param $0 v128) (param $1 v128) (result v128) + (func $70 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $71 (param $0 v128) (param $1 v128) (result v128) + (func $71 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $72 (param $0 v128) (param $1 v128) (result v128) + (func $72 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $73 (param $0 v128) (param $1 v128) (result v128) + (func $73 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $74 (param $0 v128) (param $1 v128) (result v128) + (func $74 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $75 (param $0 v128) (param $1 v128) (result v128) + (func $75 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $76 (param $0 v128) (param $1 v128) (result v128) + (func $76 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $77 (param $0 v128) (param $1 v128) (result v128) + (func $77 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $78 (param $0 v128) (param $1 v128) (result v128) + (func $78 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $79 (param $0 v128) (param $1 v128) (result v128) + (func $79 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $80 (param $0 v128) (result v128) + (func $80 (type $v128_=>_v128) (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $81 (param $0 v128) (param $1 v128) (result v128) + (func $81 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $82 (param $0 v128) (param $1 v128) (result v128) + (func $82 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $83 (param $0 v128) (param $1 v128) (result v128) + (func $83 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $84 (param $0 v128) (param $1 v128) (result v128) + (func $84 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $85 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $85 (type $v128_v128_v128_=>_v128) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $86 (param $0 v128) (result i32) + (func $86 (type $v128_=>_i32) (param $0 v128) (result i32) (v128.any_true (local.get $0) ) ) - (func $87 (param $0 i32) (param $1 v128) (result v128) + (func $87 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1) ) ) - (func $88 (param $0 i32) (param $1 v128) (result v128) + (func $88 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1) ) ) - (func $89 (param $0 i32) (param $1 v128) (result v128) + (func $89 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1) ) ) - (func $90 (param $0 i32) (param $1 v128) (result v128) + (func $90 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1) ) ) - (func $91 (param $0 i32) (param $1 v128) (result v128) + (func $91 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $92 (param $0 i32) (param $1 v128) (result v128) + (func $92 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $93 (param $0 i32) (param $1 v128) (result v128) + (func $93 (type $i32_v128_=>_v128) (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $94 (param $0 i32) (param $1 v128) + (func $94 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1) ) ) - (func $95 (param $0 i32) (param $1 v128) + (func $95 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1) ) ) - (func $96 (param $0 i32) (param $1 v128) + (func $96 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1) ) ) - (func $97 (param $0 i32) (param $1 v128) + (func $97 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1) ) ) - (func $98 (param $0 i32) (param $1 v128) + (func $98 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane align=1 0 (local.get $0) (local.get $1) ) ) - (func $99 (param $0 i32) (param $1 v128) + (func $99 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 0 (local.get $0) (local.get $1) ) ) - (func $100 (param $0 i32) (param $1 v128) + (func $100 (type $i32_v128_=>_none) (param $0 i32) (param $1 v128) (v128.store64_lane offset=32 align=1 0 (local.get $0) (local.get $1) ) ) - (func $101 (param $0 i32) (result v128) + (func $101 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $102 (param $0 i32) (result v128) + (func $102 (type $i32_=>_v128) (param $0 i32) (result v128) (v128.load64_zero (local.get $0) ) ) - (func $103 (param $0 v128) (result v128) + (func $103 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.demote_f64x2_zero (local.get $0) ) ) - (func $104 (param $0 v128) (result v128) + (func $104 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.promote_low_f32x4 (local.get $0) ) ) - (func $105 (param $0 v128) (result v128) + (func $105 (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.abs (local.get $0) ) ) - (func $106 (param $0 v128) (result v128) + (func $106 (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $107 (param $0 v128) (result v128) + (func $107 (type $v128_=>_v128) (param $0 v128) (result v128) (i8x16.popcnt (local.get $0) ) ) - (func $108 (param $0 v128) (result i32) + (func $108 (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $109 (param $0 v128) (result i32) + (func $109 (type $v128_=>_i32) (param $0 v128) (result i32) (i8x16.bitmask (local.get $0) ) ) - (func $110 (param $0 v128) (param $1 v128) (result v128) + (func $110 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $111 (param $0 v128) (param $1 v128) (result v128) + (func $111 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $112 (param $0 v128) (result v128) + (func $112 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.ceil (local.get $0) ) ) - (func $113 (param $0 v128) (result v128) + (func $113 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.floor (local.get $0) ) ) - (func $114 (param $0 v128) (result v128) + (func $114 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.trunc (local.get $0) ) ) - (func $115 (param $0 v128) (result v128) + (func $115 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.nearest (local.get $0) ) ) - (func $116 (param $0 v128) (param $1 i32) (result v128) + (func $116 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $117 (param $0 v128) (param $1 i32) (result v128) + (func $117 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $118 (param $0 v128) (param $1 i32) (result v128) + (func $118 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $119 (param $0 v128) (param $1 v128) (result v128) + (func $119 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $120 (param $0 v128) (param $1 v128) (result v128) + (func $120 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_s (local.get $0) (local.get $1) ) ) - (func $121 (param $0 v128) (param $1 v128) (result v128) + (func $121 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.add_sat_u (local.get $0) (local.get $1) ) ) - (func $122 (param $0 v128) (param $1 v128) (result v128) + (func $122 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $123 (param $0 v128) (param $1 v128) (result v128) + (func $123 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $124 (param $0 v128) (param $1 v128) (result v128) + (func $124 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $125 (param $0 v128) (result v128) + (func $125 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.ceil (local.get $0) ) ) - (func $126 (param $0 v128) (result v128) + (func $126 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.floor (local.get $0) ) ) - (func $127 (param $0 v128) (param $1 v128) (result v128) + (func $127 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $128 (param $0 v128) (param $1 v128) (result v128) + (func $128 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $129 (param $0 v128) (param $1 v128) (result v128) + (func $129 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $130 (param $0 v128) (param $1 v128) (result v128) + (func $130 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $131 (param $0 v128) (result v128) + (func $131 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.trunc (local.get $0) ) ) - (func $132 (param $0 v128) (param $1 v128) (result v128) + (func $132 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $133 (param $0 v128) (result v128) + (func $133 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_s (local.get $0) ) ) - (func $134 (param $0 v128) (result v128) + (func $134 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extadd_pairwise_i8x16_u (local.get $0) ) ) - (func $135 (param $0 v128) (result v128) + (func $135 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_s (local.get $0) ) ) - (func $136 (param $0 v128) (result v128) + (func $136 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extadd_pairwise_i16x8_u (local.get $0) ) ) - (func $137 (param $0 v128) (result v128) + (func $137 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.abs (local.get $0) ) ) - (func $138 (param $0 v128) (result v128) + (func $138 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $139 (param $0 v128) (param $1 v128) (result v128) + (func $139 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.q15mulr_sat_s (local.get $0) (local.get $1) ) ) - (func $140 (param $0 v128) (result i32) + (func $140 (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $141 (param $0 v128) (result i32) + (func $141 (type $v128_=>_i32) (param $0 v128) (result i32) (i16x8.bitmask (local.get $0) ) ) - (func $142 (param $0 v128) (param $1 v128) (result v128) + (func $142 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $143 (param $0 v128) (param $1 v128) (result v128) + (func $143 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $144 (param $0 v128) (result v128) + (func $144 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_s (local.get $0) ) ) - (func $145 (param $0 v128) (result v128) + (func $145 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_s (local.get $0) ) ) - (func $146 (param $0 v128) (result v128) + (func $146 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_low_i8x16_u (local.get $0) ) ) - (func $147 (param $0 v128) (result v128) + (func $147 (type $v128_=>_v128) (param $0 v128) (result v128) (i16x8.extend_high_i8x16_u (local.get $0) ) ) - (func $148 (param $0 v128) (param $1 i32) (result v128) + (func $148 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $149 (param $0 v128) (param $1 i32) (result v128) + (func $149 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $150 (param $0 v128) (param $1 i32) (result v128) + (func $150 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $151 (param $0 v128) (param $1 v128) (result v128) + (func $151 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $152 (param $0 v128) (param $1 v128) (result v128) + (func $152 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_s (local.get $0) (local.get $1) ) ) - (func $153 (param $0 v128) (param $1 v128) (result v128) + (func $153 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.add_sat_u (local.get $0) (local.get $1) ) ) - (func $154 (param $0 v128) (param $1 v128) (result v128) + (func $154 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $155 (param $0 v128) (param $1 v128) (result v128) + (func $155 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_s (local.get $0) (local.get $1) ) ) - (func $156 (param $0 v128) (param $1 v128) (result v128) + (func $156 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_sat_u (local.get $0) (local.get $1) ) ) - (func $157 (param $0 v128) (result v128) + (func $157 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.nearest (local.get $0) ) ) - (func $158 (param $0 v128) (param $1 v128) (result v128) + (func $158 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $159 (param $0 v128) (param $1 v128) (result v128) + (func $159 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $160 (param $0 v128) (param $1 v128) (result v128) + (func $160 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $161 (param $0 v128) (param $1 v128) (result v128) + (func $161 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $162 (param $0 v128) (param $1 v128) (result v128) + (func $162 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $163 (param $0 v128) (param $1 v128) (result v128) + (func $163 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $164 (param $0 v128) (param $1 v128) (result v128) + (func $164 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_s (local.get $0) (local.get $1) ) ) - (func $165 (param $0 v128) (param $1 v128) (result v128) + (func $165 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_s (local.get $0) (local.get $1) ) ) - (func $166 (param $0 v128) (param $1 v128) (result v128) + (func $166 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_low_i8x16_u (local.get $0) (local.get $1) ) ) - (func $167 (param $0 v128) (param $1 v128) (result v128) + (func $167 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i16x8.extmul_high_i8x16_u (local.get $0) (local.get $1) ) ) - (func $168 (param $0 v128) (result v128) + (func $168 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.abs (local.get $0) ) ) - (func $169 (param $0 v128) (result v128) + (func $169 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $170 (param $0 v128) (result i32) + (func $170 (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $171 (param $0 v128) (result i32) + (func $171 (type $v128_=>_i32) (param $0 v128) (result i32) (i32x4.bitmask (local.get $0) ) ) - (func $172 (param $0 v128) (result v128) + (func $172 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_s (local.get $0) ) ) - (func $173 (param $0 v128) (result v128) + (func $173 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_s (local.get $0) ) ) - (func $174 (param $0 v128) (result v128) + (func $174 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_low_i16x8_u (local.get $0) ) ) - (func $175 (param $0 v128) (result v128) + (func $175 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.extend_high_i16x8_u (local.get $0) ) ) - (func $176 (param $0 v128) (param $1 i32) (result v128) + (func $176 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $177 (param $0 v128) (param $1 i32) (result v128) + (func $177 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $178 (param $0 v128) (param $1 i32) (result v128) + (func $178 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $179 (param $0 v128) (param $1 v128) (result v128) + (func $179 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $180 (param $0 v128) (param $1 v128) (result v128) + (func $180 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $181 (param $0 v128) (param $1 v128) (result v128) + (func $181 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $182 (param $0 v128) (param $1 v128) (result v128) + (func $182 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $183 (param $0 v128) (param $1 v128) (result v128) + (func $183 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $184 (param $0 v128) (param $1 v128) (result v128) + (func $184 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $185 (param $0 v128) (param $1 v128) (result v128) + (func $185 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $186 (param $0 v128) (param $1 v128) (result v128) + (func $186 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $187 (param $0 v128) (param $1 v128) (result v128) + (func $187 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_s (local.get $0) (local.get $1) ) ) - (func $188 (param $0 v128) (param $1 v128) (result v128) + (func $188 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_s (local.get $0) (local.get $1) ) ) - (func $189 (param $0 v128) (param $1 v128) (result v128) + (func $189 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_low_i16x8_u (local.get $0) (local.get $1) ) ) - (func $190 (param $0 v128) (param $1 v128) (result v128) + (func $190 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i32x4.extmul_high_i16x8_u (local.get $0) (local.get $1) ) ) - (func $191 (param $0 v128) (result v128) + (func $191 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.abs (local.get $0) ) ) - (func $192 (param $0 v128) (result v128) + (func $192 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.neg (local.get $0) ) ) - (func $193 (param $0 v128) (result i32) + (func $193 (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.all_true (local.get $0) ) ) - (func $194 (param $0 v128) (result i32) + (func $194 (type $v128_=>_i32) (param $0 v128) (result i32) (i64x2.bitmask (local.get $0) ) ) - (func $195 (param $0 v128) (result v128) + (func $195 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_s (local.get $0) ) ) - (func $196 (param $0 v128) (result v128) + (func $196 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_s (local.get $0) ) ) - (func $197 (param $0 v128) (result v128) + (func $197 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_low_i32x4_u (local.get $0) ) ) - (func $198 (param $0 v128) (result v128) + (func $198 (type $v128_=>_v128) (param $0 v128) (result v128) (i64x2.extend_high_i32x4_u (local.get $0) ) ) - (func $199 (param $0 v128) (param $1 i32) (result v128) + (func $199 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $200 (param $0 v128) (param $1 i32) (result v128) + (func $200 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $201 (param $0 v128) (param $1 i32) (result v128) + (func $201 (type $v128_i32_=>_v128) (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $202 (param $0 v128) (param $1 v128) (result v128) + (func $202 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $203 (param $0 v128) (param $1 v128) (result v128) + (func $203 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $204 (param $0 v128) (param $1 v128) (result v128) + (func $204 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1) ) ) - (func $205 (param $0 v128) (param $1 v128) (result v128) + (func $205 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1) ) ) - (func $206 (param $0 v128) (param $1 v128) (result v128) + (func $206 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ne (local.get $0) (local.get $1) ) ) - (func $207 (param $0 v128) (param $1 v128) (result v128) + (func $207 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.lt_s (local.get $0) (local.get $1) ) ) - (func $208 (param $0 v128) (param $1 v128) (result v128) + (func $208 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.gt_s (local.get $0) (local.get $1) ) ) - (func $209 (param $0 v128) (param $1 v128) (result v128) + (func $209 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.le_s (local.get $0) (local.get $1) ) ) - (func $210 (param $0 v128) (param $1 v128) (result v128) + (func $210 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.ge_s (local.get $0) (local.get $1) ) ) - (func $211 (param $0 v128) (param $1 v128) (result v128) + (func $211 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_s (local.get $0) (local.get $1) ) ) - (func $212 (param $0 v128) (param $1 v128) (result v128) + (func $212 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_s (local.get $0) (local.get $1) ) ) - (func $213 (param $0 v128) (param $1 v128) (result v128) + (func $213 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_low_i32x4_u (local.get $0) (local.get $1) ) ) - (func $214 (param $0 v128) (param $1 v128) (result v128) + (func $214 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (i64x2.extmul_high_i32x4_u (local.get $0) (local.get $1) ) ) - (func $215 (param $0 v128) (result v128) + (func $215 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $216 (param $0 v128) (result v128) + (func $216 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $217 (param $0 v128) (result v128) + (func $217 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $218 (param $0 v128) (param $1 v128) (result v128) + (func $218 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $219 (param $0 v128) (param $1 v128) (result v128) + (func $219 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $220 (param $0 v128) (param $1 v128) (result v128) + (func $220 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $221 (param $0 v128) (param $1 v128) (result v128) + (func $221 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $222 (param $0 v128) (param $1 v128) (result v128) + (func $222 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $223 (param $0 v128) (param $1 v128) (result v128) + (func $223 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $224 (param $0 v128) (param $1 v128) (result v128) + (func $224 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1) ) ) - (func $225 (param $0 v128) (param $1 v128) (result v128) + (func $225 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1) ) ) - (func $226 (param $0 v128) (result v128) + (func $226 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $227 (param $0 v128) (result v128) + (func $227 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $228 (param $0 v128) (result v128) + (func $228 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $229 (param $0 v128) (param $1 v128) (result v128) + (func $229 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $230 (param $0 v128) (param $1 v128) (result v128) + (func $230 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $231 (param $0 v128) (param $1 v128) (result v128) + (func $231 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $232 (param $0 v128) (param $1 v128) (result v128) + (func $232 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $233 (param $0 v128) (param $1 v128) (result v128) + (func $233 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $234 (param $0 v128) (param $1 v128) (result v128) + (func $234 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $235 (param $0 v128) (param $1 v128) (result v128) + (func $235 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1) ) ) - (func $236 (param $0 v128) (param $1 v128) (result v128) + (func $236 (type $v128_v128_=>_v128) (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1) ) ) - (func $237 (param $0 v128) (result v128) + (func $237 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $238 (param $0 v128) (result v128) + (func $238 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $239 (param $0 v128) (result v128) + (func $239 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $240 (param $0 v128) (result v128) + (func $240 (type $v128_=>_v128) (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $241 (param $0 v128) (result v128) + (func $241 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_s_zero (local.get $0) ) ) - (func $242 (param $0 v128) (result v128) + (func $242 (type $v128_=>_v128) (param $0 v128) (result v128) (i32x4.trunc_sat_f64x2_u_zero (local.get $0) ) ) - (func $243 (param $0 v128) (result v128) + (func $243 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_s (local.get $0) ) ) - (func $244 (param $0 v128) (result v128) + (func $244 (type $v128_=>_v128) (param $0 v128) (result v128) (f64x2.convert_low_i32x4_u (local.get $0) ) diff --git a/test/simd64.wast.from-wast b/test/simd64.wast.from-wast index a12e5d08f..933f9adbc 100644 --- a/test/simd64.wast.from-wast +++ b/test/simd64.wast.from-wast @@ -2,73 +2,73 @@ (type $i64_=>_v128 (func (param i64) (result v128))) (type $i64_v128_=>_none (func (param i64 v128))) (memory $0 i64 1 1) - (func $v128.load (param $0 i64) (result v128) + (func $v128.load (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load (local.get $0) ) ) - (func $v128.store (param $0 i64) (param $1 v128) + (func $v128.store (type $i64_v128_=>_none) (param $0 i64) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.load8_splat (param $0 i64) (result v128) + (func $v128.load8_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $v128.load16_splat (param $0 i64) (result v128) + (func $v128.load16_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $v128.load32_splat (param $0 i64) (result v128) + (func $v128.load32_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $v128.load64_splat (param $0 i64) (result v128) + (func $v128.load64_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i64) (result v128) + (func $v128.load8x8_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i64) (result v128) + (func $v128.load8x8_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i64) (result v128) + (func $v128.load16x4_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i64) (result v128) + (func $v128.load16x4_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i64) (result v128) + (func $v128.load32x2_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i64) (result v128) + (func $v128.load32x2_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $v128.load32_zero (param $0 i64) (result v128) + (func $v128.load32_zero (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $v128.load64_zero (param $0 i64) (result v128) + (func $v128.load64_zero (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_zero (local.get $0) ) diff --git a/test/simd64.wast.fromBinary b/test/simd64.wast.fromBinary index 988f678b8..c66eadeb9 100644 --- a/test/simd64.wast.fromBinary +++ b/test/simd64.wast.fromBinary @@ -2,73 +2,73 @@ (type $i64_=>_v128 (func (param i64) (result v128))) (type $i64_v128_=>_none (func (param i64 v128))) (memory $0 i64 1 1) - (func $v128.load (param $0 i64) (result v128) + (func $v128.load (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load (local.get $0) ) ) - (func $v128.store (param $0 i64) (param $1 v128) + (func $v128.store (type $i64_v128_=>_none) (param $0 i64) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.load8_splat (param $0 i64) (result v128) + (func $v128.load8_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $v128.load16_splat (param $0 i64) (result v128) + (func $v128.load16_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $v128.load32_splat (param $0 i64) (result v128) + (func $v128.load32_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $v128.load64_splat (param $0 i64) (result v128) + (func $v128.load64_splat (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $v128.load8x8_u (param $0 i64) (result v128) + (func $v128.load8x8_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $v128.load8x8_s (param $0 i64) (result v128) + (func $v128.load8x8_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $v128.load16x4_s (param $0 i64) (result v128) + (func $v128.load16x4_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $v128.load16x4_u (param $0 i64) (result v128) + (func $v128.load16x4_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $v128.load32x2_s (param $0 i64) (result v128) + (func $v128.load32x2_s (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $v128.load32x2_u (param $0 i64) (result v128) + (func $v128.load32x2_u (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $v128.load32_zero (param $0 i64) (result v128) + (func $v128.load32_zero (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $v128.load64_zero (param $0 i64) (result v128) + (func $v128.load64_zero (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_zero (local.get $0) ) diff --git a/test/simd64.wast.fromBinary.noDebugInfo b/test/simd64.wast.fromBinary.noDebugInfo index 2e96dfe64..e252ecb2c 100644 --- a/test/simd64.wast.fromBinary.noDebugInfo +++ b/test/simd64.wast.fromBinary.noDebugInfo @@ -2,73 +2,73 @@ (type $i64_=>_v128 (func (param i64) (result v128))) (type $i64_v128_=>_none (func (param i64 v128))) (memory $0 i64 1 1) - (func $0 (param $0 i64) (result v128) + (func $0 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load (local.get $0) ) ) - (func $1 (param $0 i64) (param $1 v128) + (func $1 (type $i64_v128_=>_none) (param $0 i64) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $2 (param $0 i64) (result v128) + (func $2 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8_splat (local.get $0) ) ) - (func $3 (param $0 i64) (result v128) + (func $3 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16_splat (local.get $0) ) ) - (func $4 (param $0 i64) (result v128) + (func $4 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_splat (local.get $0) ) ) - (func $5 (param $0 i64) (result v128) + (func $5 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_splat (local.get $0) ) ) - (func $6 (param $0 i64) (result v128) + (func $6 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_u (local.get $0) ) ) - (func $7 (param $0 i64) (result v128) + (func $7 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load8x8_s (local.get $0) ) ) - (func $8 (param $0 i64) (result v128) + (func $8 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_s (local.get $0) ) ) - (func $9 (param $0 i64) (result v128) + (func $9 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load16x4_u (local.get $0) ) ) - (func $10 (param $0 i64) (result v128) + (func $10 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_s (local.get $0) ) ) - (func $11 (param $0 i64) (result v128) + (func $11 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32x2_u (local.get $0) ) ) - (func $12 (param $0 i64) (result v128) + (func $12 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load32_zero (local.get $0) ) ) - (func $13 (param $0 i64) (result v128) + (func $13 (type $i64_=>_v128) (param $0 i64) (result v128) (v128.load64_zero (local.get $0) ) diff --git a/test/spec/array.wast b/test/spec/array.wast index fd151669e..c30365030 100644 --- a/test/spec/array.wast +++ b/test/spec/array.wast @@ -35,12 +35,15 @@ ;; Binding structure (module - (type $s0 (array (ref $s1))) - (type $s1 (array (ref $s0))) - - (func (param (ref $forward))) + (rec + (type $s0 (array (ref $s1))) + (type $s1 (array (ref $s0))) + ) - (type $forward (array i32)) + (rec + (func (param (ref $forward))) + (type $forward (array i32)) + ) ) (assert_invalid diff --git a/test/spec/ref_cast.wast b/test/spec/ref_cast.wast index 1af96d9d4..86f958b80 100644 --- a/test/spec/ref_cast.wast +++ b/test/spec/ref_cast.wast @@ -1,10 +1,10 @@ (module (type $t0 (struct)) - (type $t1 (struct (field i32))) - (type $t1' (struct (field i32))) - (type $t2 (struct (field i32) (field i32))) - (type $t2' (struct (field i32) (field i32))) - (type $t3 (struct (field i32) (field i32))) + (type $t1 (struct_subtype (field i32) $t0)) + (type $t1' (struct_subtype (field i32) $t1)) + (type $t2 (struct_subtype (field i32) (field i32) $t1)) + (type $t2' (struct_subtype (field i32) (field i32) $t2)) + (type $t3 (struct_subtype (field i32) (field i32) $t2)) (global $tab.0 (mut (ref null data)) (ref.null data)) (global $tab.1 (mut (ref null data)) (ref.null data)) @@ -56,14 +56,9 @@ (drop (ref.cast_static $t0 (global.get $tab.11))) (drop (ref.cast_static $t0 (global.get $tab.12))) - (drop (ref.cast_static $t1' (global.get $tab.1))) - (drop (ref.cast_static $t1' (global.get $tab.2))) - (drop (ref.cast_static $t1 (global.get $tab.11))) (drop (ref.cast_static $t1 (global.get $tab.12))) - (drop (ref.cast_static $t2' (global.get $tab.2))) - (drop (ref.cast_static $t2 (global.get $tab.12))) ) ) diff --git a/test/spec/struct.wast b/test/spec/struct.wast index 5bc8e2f2e..4d86f6538 100644 --- a/test/spec/struct.wast +++ b/test/spec/struct.wast @@ -1,12 +1,15 @@ ;; Binding structure (module - (type $s0 (struct (field (ref 0) (ref 1) (ref $s0) (ref $s1)))) - (type $s1 (struct (field (ref 0) (ref 1) (ref $s0) (ref $s1)))) - - (func (param (ref $forward))) + (rec + (type $s0 (struct (field (ref 0) (ref 1) (ref $s0) (ref $s1)))) + (type $s1 (struct (field (ref 0) (ref 1) (ref $s0) (ref $s1)))) + ) - (type $forward (struct)) + (rec + (func (param (ref $forward))) + (type $forward (struct)) + ) ) (assert_invalid diff --git a/test/subtypes.wast b/test/subtypes.wast index bb67f9d72..0562d6cb2 100644 --- a/test/subtypes.wast +++ b/test/subtypes.wast @@ -3,28 +3,31 @@ ;; Arrays (type $vector-i32 (array i32)) - (type $vector-i31 (array (ref i31))) (type $vector-any (array (ref any))) + (type $vector-i31 (array_subtype (ref i31) $vector-any)) ;; Structs - (type $struct-i31 (struct - (field (ref i31)) - )) (type $struct-any (struct (field (ref any)) )) - (type $struct-i31_any (struct + (type $struct-i31 (struct_subtype + (field (ref i31)) + $struct-any + )) + (type $struct-i31_any (struct_subtype (field (ref i31)) (field (ref any)) + $struct-i31 )) ;; Recursive structs (type $struct-rec-one (struct (field (ref $struct-rec-one)) )) - (type $struct-rec-two (struct + (type $struct-rec-two (struct_subtype (field (ref $struct-rec-two)) (field (ref $struct-rec-two)) + $struct-rec-one )) (func $foo (param $no-null (ref $vector-i32)) diff --git a/test/subtypes.wast.from-wast b/test/subtypes.wast.from-wast index 88bd9b976..f927ab7c6 100644 --- a/test/subtypes.wast.from-wast +++ b/test/subtypes.wast.from-wast @@ -1,38 +1,38 @@ (module - (type $struct-rec-two (struct (field (ref $struct-rec-two)) (field (ref $struct-rec-two)))) - (type $vector-i32 (array i32)) - (type $struct-i31 (struct (field (ref i31)))) (type $struct-rec-one (struct (field (ref $struct-rec-one)))) + (type $struct-rec-two (struct_subtype (field (ref $struct-rec-two)) (field (ref $struct-rec-two)) $struct-rec-one)) + (type $vector-i32 (array i32)) + (type $struct-any (struct (field (ref any)))) + (type $struct-i31 (struct_subtype (field (ref i31)) $struct-any)) (type $ref|$vector-i32|_ref?|$vector-i32|_=>_none (func (param (ref $vector-i32) (ref null $vector-i32)))) + (type $vector-any (array (ref any))) + (type $vector-i31 (array_subtype (ref i31) $vector-any)) (type $ref|$vector-i31|_ref|$vector-any|_=>_none (func (param (ref $vector-i31) (ref $vector-any)))) (type $ref|$struct-i31|_ref|$struct-any|_=>_none (func (param (ref $struct-i31) (ref $struct-any)))) + (type $struct-i31_any (struct_subtype (field (ref i31)) (field (ref any)) $struct-i31)) (type $ref|$struct-i31|_ref|$struct-i31_any|_=>_none (func (param (ref $struct-i31) (ref $struct-i31_any)))) (type $ref|$struct-rec-one|_ref|$struct-rec-two|_=>_none (func (param (ref $struct-rec-one) (ref $struct-rec-two)))) - (type $vector-i31 (array (ref i31))) - (type $vector-any (array (ref any))) - (type $struct-any (struct (field (ref any)))) - (type $struct-i31_any (struct (field (ref i31)) (field (ref any)))) - (func $foo (param $no-null (ref $vector-i32)) (param $yes-null (ref null $vector-i32)) + (func $foo (type $ref|$vector-i32|_ref?|$vector-i32|_=>_none) (param $no-null (ref $vector-i32)) (param $yes-null (ref null $vector-i32)) (local.set $yes-null (local.get $no-null) ) ) - (func $bar (param $v-i31 (ref $vector-i31)) (param $v-any (ref $vector-any)) + (func $bar (type $ref|$vector-i31|_ref|$vector-any|_=>_none) (param $v-i31 (ref $vector-i31)) (param $v-any (ref $vector-any)) (local.set $v-any (local.get $v-i31) ) ) - (func $baz (param $s-i31 (ref $struct-i31)) (param $s-any (ref $struct-any)) + (func $baz (type $ref|$struct-i31|_ref|$struct-any|_=>_none) (param $s-i31 (ref $struct-i31)) (param $s-any (ref $struct-any)) (local.set $s-any (local.get $s-i31) ) ) - (func $boo (param $s-i31 (ref $struct-i31)) (param $s-i31_any (ref $struct-i31_any)) + (func $boo (type $ref|$struct-i31|_ref|$struct-i31_any|_=>_none) (param $s-i31 (ref $struct-i31)) (param $s-i31_any (ref $struct-i31_any)) (local.set $s-i31 (local.get $s-i31_any) ) ) - (func $coinductive (param $rec-one (ref $struct-rec-one)) (param $rec-two (ref $struct-rec-two)) + (func $coinductive (type $ref|$struct-rec-one|_ref|$struct-rec-two|_=>_none) (param $rec-one (ref $struct-rec-one)) (param $rec-two (ref $struct-rec-two)) (local.set $rec-one (local.get $rec-two) ) diff --git a/test/subtypes.wast.fromBinary b/test/subtypes.wast.fromBinary index 6286fb527..c29ad10b0 100644 --- a/test/subtypes.wast.fromBinary +++ b/test/subtypes.wast.fromBinary @@ -1,38 +1,38 @@ (module - (type $struct-rec-two (struct (field (ref $struct-rec-two)) (field (ref $struct-rec-two)))) - (type $vector-i32 (array i32)) - (type $struct-i31 (struct (field (ref i31)))) (type $struct-rec-one (struct (field (ref $struct-rec-one)))) + (type $struct-rec-two (struct_subtype (field (ref $struct-rec-two)) (field (ref $struct-rec-two)) $struct-rec-one)) + (type $vector-i32 (array i32)) + (type $struct-any (struct (field (ref any)))) + (type $struct-i31 (struct_subtype (field (ref i31)) $struct-any)) (type $ref|$vector-i32|_ref?|$vector-i32|_=>_none (func (param (ref $vector-i32) (ref null $vector-i32)))) + (type $vector-any (array (ref any))) + (type $vector-i31 (array_subtype (ref i31) $vector-any)) (type $ref|$vector-i31|_ref|$vector-any|_=>_none (func (param (ref $vector-i31) (ref $vector-any)))) (type $ref|$struct-i31|_ref|$struct-any|_=>_none (func (param (ref $struct-i31) (ref $struct-any)))) + (type $struct-i31_any (struct_subtype (field (ref i31)) (field (ref any)) $struct-i31)) (type $ref|$struct-i31|_ref|$struct-i31_any|_=>_none (func (param (ref $struct-i31) (ref $struct-i31_any)))) (type $ref|$struct-rec-one|_ref|$struct-rec-two|_=>_none (func (param (ref $struct-rec-one) (ref $struct-rec-two)))) - (type $vector-i31 (array (ref i31))) - (type $vector-any (array (ref any))) - (type $struct-any (struct (field (ref any)))) - (type $struct-i31_any (struct (field (ref i31)) (field (ref any)))) - (func $foo (param $no-null (ref $vector-i32)) (param $yes-null (ref null $vector-i32)) + (func $foo (type $ref|$vector-i32|_ref?|$vector-i32|_=>_none) (param $no-null (ref $vector-i32)) (param $yes-null (ref null $vector-i32)) (local.set $yes-null (local.get $no-null) ) ) - (func $bar (param $v-i31 (ref $vector-i31)) (param $v-any (ref $vector-any)) + (func $bar (type $ref|$vector-i31|_ref|$vector-any|_=>_none) (param $v-i31 (ref $vector-i31)) (param $v-any (ref $vector-any)) (local.set $v-any (local.get $v-i31) ) ) - (func $baz (param $s-i31 (ref $struct-i31)) (param $s-any (ref $struct-any)) + (func $baz (type $ref|$struct-i31|_ref|$struct-any|_=>_none) (param $s-i31 (ref $struct-i31)) (param $s-any (ref $struct-any)) (local.set $s-any (local.get $s-i31) ) ) - (func $boo (param $s-i31 (ref $struct-i31)) (param $s-i31_any (ref $struct-i31_any)) + (func $boo (type $ref|$struct-i31|_ref|$struct-i31_any|_=>_none) (param $s-i31 (ref $struct-i31)) (param $s-i31_any (ref $struct-i31_any)) (local.set $s-i31 (local.get $s-i31_any) ) ) - (func $coinductive (param $rec-one (ref $struct-rec-one)) (param $rec-two (ref $struct-rec-two)) + (func $coinductive (type $ref|$struct-rec-one|_ref|$struct-rec-two|_=>_none) (param $rec-one (ref $struct-rec-one)) (param $rec-two (ref $struct-rec-two)) (local.set $rec-one (local.get $rec-two) ) diff --git a/test/subtypes.wast.fromBinary.noDebugInfo b/test/subtypes.wast.fromBinary.noDebugInfo index 210e9ab8c..0e77deeed 100644 --- a/test/subtypes.wast.fromBinary.noDebugInfo +++ b/test/subtypes.wast.fromBinary.noDebugInfo @@ -1,38 +1,38 @@ (module - (type ${ref|...0|_ref|...0|} (struct (field (ref ${ref|...0|_ref|...0|})) (field (ref ${ref|...0|_ref|...0|})))) - (type $[i32] (array i32)) - (type ${ref|i31|} (struct (field (ref i31)))) (type ${ref|...0|} (struct (field (ref ${ref|...0|})))) + (type ${ref|...0|_ref|...0|} (struct_subtype (field (ref ${ref|...0|_ref|...0|})) (field (ref ${ref|...0|_ref|...0|})) ${ref|...0|})) + (type $[i32] (array i32)) + (type ${ref|any|} (struct (field (ref any)))) + (type ${ref|i31|} (struct_subtype (field (ref i31)) ${ref|any|})) (type $ref|[i32]|_ref?|[i32]|_=>_none (func (param (ref $[i32]) (ref null $[i32])))) + (type $[ref|any|] (array (ref any))) + (type $[ref|i31|] (array_subtype (ref i31) $[ref|any|])) (type $ref|[ref|i31|]|_ref|[ref|any|]|_=>_none (func (param (ref $[ref|i31|]) (ref $[ref|any|])))) (type $ref|{ref|i31|}|_ref|{ref|any|}|_=>_none (func (param (ref ${ref|i31|}) (ref ${ref|any|})))) + (type ${ref|i31|_ref|any|} (struct_subtype (field (ref i31)) (field (ref any)) ${ref|i31|})) (type $ref|{ref|i31|}|_ref|{ref|i31|_ref|any|}|_=>_none (func (param (ref ${ref|i31|}) (ref ${ref|i31|_ref|any|})))) (type $ref|{ref|...0|}|_ref|{ref|...0|_ref|...0|}|_=>_none (func (param (ref ${ref|...0|}) (ref ${ref|...0|_ref|...0|})))) - (type $[ref|i31|] (array (ref i31))) - (type $[ref|any|] (array (ref any))) - (type ${ref|any|} (struct (field (ref any)))) - (type ${ref|i31|_ref|any|} (struct (field (ref i31)) (field (ref any)))) - (func $0 (param $0 (ref $[i32])) (param $1 (ref null $[i32])) + (func $0 (type $ref|[i32]|_ref?|[i32]|_=>_none) (param $0 (ref $[i32])) (param $1 (ref null $[i32])) (local.set $1 (local.get $0) ) ) - (func $1 (param $0 (ref $[ref|i31|])) (param $1 (ref $[ref|any|])) + (func $1 (type $ref|[ref|i31|]|_ref|[ref|any|]|_=>_none) (param $0 (ref $[ref|i31|])) (param $1 (ref $[ref|any|])) (local.set $1 (local.get $0) ) ) - (func $2 (param $0 (ref ${ref|i31|})) (param $1 (ref ${ref|any|})) + (func $2 (type $ref|{ref|i31|}|_ref|{ref|any|}|_=>_none) (param $0 (ref ${ref|i31|})) (param $1 (ref ${ref|any|})) (local.set $1 (local.get $0) ) ) - (func $3 (param $0 (ref ${ref|i31|})) (param $1 (ref ${ref|i31|_ref|any|})) + (func $3 (type $ref|{ref|i31|}|_ref|{ref|i31|_ref|any|}|_=>_none) (param $0 (ref ${ref|i31|})) (param $1 (ref ${ref|i31|_ref|any|})) (local.set $0 (local.get $1) ) ) - (func $4 (param $0 (ref ${ref|...0|})) (param $1 (ref ${ref|...0|_ref|...0|})) + (func $4 (type $ref|{ref|...0|}|_ref|{ref|...0|_ref|...0|}|_=>_none) (param $0 (ref ${ref|...0|})) (param $1 (ref ${ref|...0|_ref|...0|})) (local.set $0 (local.get $1) ) diff --git a/test/table-import.wast.from-wast b/test/table-import.wast.from-wast index bbace54cf..17d889564 100644 --- a/test/table-import.wast.from-wast +++ b/test/table-import.wast.from-wast @@ -3,7 +3,7 @@ (import "env" "table" (table $timport$0 1 1 funcref)) (memory $0 0) (elem (i32.const 0) $foo) - (func $foo + (func $foo (type $0) (nop) ) ) diff --git a/test/table-import.wast.fromBinary b/test/table-import.wast.fromBinary index 7c09f0291..363ab28b5 100644 --- a/test/table-import.wast.fromBinary +++ b/test/table-import.wast.fromBinary @@ -3,7 +3,7 @@ (import "env" "table" (table $timport$0 1 1 funcref)) (memory $0 0) (elem (i32.const 0) $foo) - (func $foo + (func $foo (type $0) (nop) ) ) diff --git a/test/table-import.wast.fromBinary.noDebugInfo b/test/table-import.wast.fromBinary.noDebugInfo index ed53490cb..13946ee7b 100644 --- a/test/table-import.wast.fromBinary.noDebugInfo +++ b/test/table-import.wast.fromBinary.noDebugInfo @@ -3,7 +3,7 @@ (import "env" "table" (table $timport$0 1 1 funcref)) (memory $0 0) (elem (i32.const 0) $0) - (func $0 + (func $0 (type $none_=>_none) (nop) ) ) diff --git a/test/unreachable-code.wast.from-wast b/test/unreachable-code.wast.from-wast index afd67f76f..6034fabc3 100644 --- a/test/unreachable-code.wast.from-wast +++ b/test/unreachable-code.wast.from-wast @@ -1,32 +1,32 @@ (module (type $none_=>_none (func)) - (func $a + (func $a (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $b + (func $b (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-block + (func $a-block (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $b-block + (func $b-block (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-prepost + (func $a-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -34,7 +34,7 @@ ) (nop) ) - (func $b-prepost + (func $b-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -43,7 +43,7 @@ ) (nop) ) - (func $a-block-prepost + (func $a-block-prepost (type $none_=>_none) (nop) (block (if @@ -53,7 +53,7 @@ ) (nop) ) - (func $b-block-prepost + (func $b-block-prepost (type $none_=>_none) (nop) (block (if @@ -64,7 +64,7 @@ ) (nop) ) - (func $recurse + (func $recurse (type $none_=>_none) (block $a (nop) (block $b @@ -75,7 +75,7 @@ (nop) ) ) - (func $recurse-b + (func $recurse-b (type $none_=>_none) (block $a (nop) (block $b diff --git a/test/unreachable-code.wast.fromBinary b/test/unreachable-code.wast.fromBinary index 67b8c30a6..26177527d 100644 --- a/test/unreachable-code.wast.fromBinary +++ b/test/unreachable-code.wast.fromBinary @@ -1,32 +1,32 @@ (module (type $none_=>_none (func)) - (func $a + (func $a (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $b + (func $b (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-block + (func $a-block (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $b-block + (func $b-block (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-prepost + (func $a-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -34,7 +34,7 @@ ) (nop) ) - (func $b-prepost + (func $b-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -42,7 +42,7 @@ (unreachable) ) ) - (func $a-block-prepost + (func $a-block-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -50,7 +50,7 @@ ) (nop) ) - (func $b-block-prepost + (func $b-block-prepost (type $none_=>_none) (nop) (if (i32.const 1) @@ -58,7 +58,7 @@ (unreachable) ) ) - (func $recurse + (func $recurse (type $none_=>_none) (nop) (block $label$1 (nop) @@ -66,7 +66,7 @@ ) (nop) ) - (func $recurse-b + (func $recurse-b (type $none_=>_none) (block $label$1 (nop) (block $label$2 diff --git a/test/unreachable-code.wast.fromBinary.noDebugInfo b/test/unreachable-code.wast.fromBinary.noDebugInfo index 3ff74e98f..9f90354a9 100644 --- a/test/unreachable-code.wast.fromBinary.noDebugInfo +++ b/test/unreachable-code.wast.fromBinary.noDebugInfo @@ -1,32 +1,32 @@ (module (type $none_=>_none (func)) - (func $0 + (func $0 (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $1 + (func $1 (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $2 + (func $2 (type $none_=>_none) (if (i32.const 1) (unreachable) ) ) - (func $3 + (func $3 (type $none_=>_none) (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $4 + (func $4 (type $none_=>_none) (nop) (if (i32.const 1) @@ -34,7 +34,7 @@ ) (nop) ) - (func $5 + (func $5 (type $none_=>_none) (nop) (if (i32.const 1) @@ -42,7 +42,7 @@ (unreachable) ) ) - (func $6 + (func $6 (type $none_=>_none) (nop) (if (i32.const 1) @@ -50,7 +50,7 @@ ) (nop) ) - (func $7 + (func $7 (type $none_=>_none) (nop) (if (i32.const 1) @@ -58,7 +58,7 @@ (unreachable) ) ) - (func $8 + (func $8 (type $none_=>_none) (nop) (block $label$1 (nop) @@ -66,7 +66,7 @@ ) (nop) ) - (func $9 + (func $9 (type $none_=>_none) (block $label$1 (nop) (block $label$2 diff --git a/test/unreachable-instr-type.wast.from-wast b/test/unreachable-instr-type.wast.from-wast index 311c98a66..0013a0e2f 100644 --- a/test/unreachable-instr-type.wast.from-wast +++ b/test/unreachable-instr-type.wast.from-wast @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $test + (func $test (type $none_=>_none) (i32.load (unreachable) ) diff --git a/test/unreachable-instr-type.wast.fromBinary b/test/unreachable-instr-type.wast.fromBinary index 8538eccef..e68bf5b3a 100644 --- a/test/unreachable-instr-type.wast.fromBinary +++ b/test/unreachable-instr-type.wast.fromBinary @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $test + (func $test (type $none_=>_none) (unreachable) ) ) diff --git a/test/unreachable-instr-type.wast.fromBinary.noDebugInfo b/test/unreachable-instr-type.wast.fromBinary.noDebugInfo index b9de7d9bd..8004817d0 100644 --- a/test/unreachable-instr-type.wast.fromBinary.noDebugInfo +++ b/test/unreachable-instr-type.wast.fromBinary.noDebugInfo @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $0 + (func $0 (type $none_=>_none) (unreachable) ) ) diff --git a/test/untaken-br_if.wast.from-wast b/test/untaken-br_if.wast.from-wast index 616402045..8cabc57df 100644 --- a/test/untaken-br_if.wast.from-wast +++ b/test/untaken-br_if.wast.from-wast @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $binaryify-untaken-br_if (result f32) + (func $binaryify-untaken-br_if (type $none_=>_f32) (result f32) (if (result f32) (i32.const 1) (unreachable) diff --git a/test/untaken-br_if.wast.fromBinary b/test/untaken-br_if.wast.fromBinary index 25e0e728b..d8dd3eb80 100644 --- a/test/untaken-br_if.wast.fromBinary +++ b/test/untaken-br_if.wast.fromBinary @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $binaryify-untaken-br_if (result f32) + (func $binaryify-untaken-br_if (type $none_=>_f32) (result f32) (if (result f32) (i32.const 1) (unreachable) diff --git a/test/untaken-br_if.wast.fromBinary.noDebugInfo b/test/untaken-br_if.wast.fromBinary.noDebugInfo index 5f1473dda..056098c6a 100644 --- a/test/untaken-br_if.wast.fromBinary.noDebugInfo +++ b/test/untaken-br_if.wast.fromBinary.noDebugInfo @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $0 (result f32) + (func $0 (type $none_=>_f32) (result f32) (if (result f32) (i32.const 1) (unreachable) |