diff options
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) |