diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/multivalue.wast | 16 | ||||
-rw-r--r-- | test/multivalue.wast.from-wast | 37 | ||||
-rw-r--r-- | test/multivalue.wast.fromBinary | 42 | ||||
-rw-r--r-- | test/multivalue.wast.fromBinary.noDebugInfo | 42 | ||||
-rw-r--r-- | test/spec/multivalue.wast | 15 |
5 files changed, 120 insertions, 32 deletions
diff --git a/test/multivalue.wast b/test/multivalue.wast index 08e23f62a..d740d384f 100644 --- a/test/multivalue.wast +++ b/test/multivalue.wast @@ -1,7 +1,8 @@ (module (import "env" "pair" (func $pair (result i32 i64))) - - ;; Test basic lowering of tuple.make, tuple.extract, and tuple locals + (global $g1 (mut (i32 i64)) (tuple.make (i32.const 0) (i64.const 0))) + (global $g2 (i32 i64) (tuple.make (i32.const 0) (i64.const 0))) + ;; Test basic lowering of tuple.make, tuple.extract, and tuple variables (func $triple (result i32 i64 f32) (tuple.make (i32.const 42) @@ -51,6 +52,17 @@ ) ) + ;; Test multivalue globals + (func $global (result i32 i64) + (global.set $g1 + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + (global.get $g2) + ) + ;; Test lowering of multivalue drops (func $drop-call (drop diff --git a/test/multivalue.wast.from-wast b/test/multivalue.wast.from-wast index a918979f5..d23198e94 100644 --- a/test/multivalue.wast.from-wast +++ b/test/multivalue.wast.from-wast @@ -9,6 +9,14 @@ (type $none_=>_i32_i64_nullref (func (result i32 i64 nullref))) (type $none_=>_f32 (func (result f32))) (import "env" "pair" (func $pair (result i32 i64))) + (global $g1 (mut (i32 i64)) (tuple.make + (i32.const 0) + (i64.const 0) + )) + (global $g2 (i32 i64) (tuple.make + (i32.const 0) + (i64.const 0) + )) (func $triple (; 1 ;) (result i32 i64 f32) (tuple.make (i32.const 42) @@ -57,12 +65,21 @@ ) ) ) - (func $drop-call (; 7 ;) + (func $global (; 7 ;) (result i32 i64) + (global.set $g1 + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + (global.get $g2) + ) + (func $drop-call (; 8 ;) (drop (call $pair) ) ) - (func $drop-tuple-make (; 8 ;) + (func $drop-tuple-make (; 9 ;) (drop (tuple.make (i32.const 42) @@ -70,7 +87,7 @@ ) ) ) - (func $drop-block (; 9 ;) + (func $drop-block (; 10 ;) (drop (block $block (result i32 i64) (tuple.make @@ -80,7 +97,7 @@ ) ) ) - (func $mv-return (; 10 ;) (result i32 i64) + (func $mv-return (; 11 ;) (result i32 i64) (return (tuple.make (i32.const 42) @@ -88,7 +105,7 @@ ) ) ) - (func $mv-return-in-block (; 11 ;) (result i32 i64) + (func $mv-return-in-block (; 12 ;) (result i32 i64) (block $block (result i32 i64) (return (tuple.make @@ -98,7 +115,7 @@ ) ) ) - (func $mv-block-break (; 12 ;) (result i32 i64) + (func $mv-block-break (; 13 ;) (result i32 i64) (block $l (result i32 i64) (br $l (tuple.make @@ -108,7 +125,7 @@ ) ) ) - (func $mv-block-br-if (; 13 ;) (result i32 i64) + (func $mv-block-br-if (; 14 ;) (result i32 i64) (block $l (result i32 i64) (br_if $l (tuple.make @@ -119,7 +136,7 @@ ) ) ) - (func $mv-if (; 14 ;) (result i32 i64 anyref) + (func $mv-if (; 15 ;) (result i32 i64 anyref) (if (result i32 i64 nullref) (i32.const 1) (tuple.make @@ -134,7 +151,7 @@ ) ) ) - (func $mv-loop (; 15 ;) (result i32 i64) + (func $mv-loop (; 16 ;) (result i32 i64) (loop $loop-in (result i32 i64) (tuple.make (i32.const 42) @@ -142,7 +159,7 @@ ) ) ) - (func $mv-switch (; 16 ;) (result i32 i64) + (func $mv-switch (; 17 ;) (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 32f744c46..2a1bd095e 100644 --- a/test/multivalue.wast.fromBinary +++ b/test/multivalue.wast.fromBinary @@ -9,6 +9,10 @@ (type $none_=>_i32_i64_nullref (func (result i32 i64 nullref))) (type $none_=>_f32 (func (result f32))) (import "env" "pair" (func $pair (result i32 i64))) + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i64) (i64.const 0)) + (global $global$2 i32 (i32.const 0)) + (global $global$3 i64 (i64.const 0)) (func $triple (; 1 ;) (result i32 i64 f32) (tuple.make (i32.const 42) @@ -235,7 +239,25 @@ ) (unreachable) ) - (func $drop-call (; 7 ;) + (func $global (; 7 ;) (result i32 i64) + (local $0 i32) + (global.set $global$0 + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (global.set $global$1 + (i64.const 7) + ) + (local.get $0) + ) + ) + (tuple.make + (global.get $global$2) + (global.get $global$3) + ) + ) + (func $drop-call (; 8 ;) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -257,7 +279,7 @@ ) ) ) - (func $drop-tuple-make (; 8 ;) + (func $drop-tuple-make (; 9 ;) (local $0 i32) (drop (block (result i32) @@ -271,7 +293,7 @@ ) ) ) - (func $drop-block (; 9 ;) + (func $drop-block (; 10 ;) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -298,7 +320,7 @@ ) ) ) - (func $mv-return (; 10 ;) (result i32 i64) + (func $mv-return (; 11 ;) (result i32 i64) (return (tuple.make (i32.const 42) @@ -306,7 +328,7 @@ ) ) ) - (func $mv-return-in-block (; 11 ;) (result i32 i64) + (func $mv-return-in-block (; 12 ;) (result i32 i64) (return (tuple.make (i32.const 42) @@ -314,7 +336,7 @@ ) ) ) - (func $mv-block-break (; 12 ;) (result i32 i64) + (func $mv-block-break (; 13 ;) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (block $label$1 (result i32 i64) @@ -335,7 +357,7 @@ ) ) ) - (func $mv-block-br-if (; 13 ;) (result i32 i64) + (func $mv-block-br-if (; 14 ;) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 @@ -368,7 +390,7 @@ ) ) ) - (func $mv-if (; 14 ;) (result i32 i64 anyref) + (func $mv-if (; 15 ;) (result i32 i64 anyref) (local $0 (i32 i64 nullref)) (local.set $0 (if (result i32 i64 nullref) @@ -397,7 +419,7 @@ ) ) ) - (func $mv-loop (; 15 ;) (result i32 i64) + (func $mv-loop (; 16 ;) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (loop $label$1 (result i32 i64) @@ -416,7 +438,7 @@ ) ) ) - (func $mv-switch (; 16 ;) (result i32 i64) + (func $mv-switch (; 17 ;) (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 c105df989..1682e3144 100644 --- a/test/multivalue.wast.fromBinary.noDebugInfo +++ b/test/multivalue.wast.fromBinary.noDebugInfo @@ -9,6 +9,10 @@ (type $none_=>_i32_i64_nullref (func (result i32 i64 nullref))) (type $none_=>_f32 (func (result f32))) (import "env" "pair" (func $fimport$0 (result i32 i64))) + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i64) (i64.const 0)) + (global $global$2 i32 (i32.const 0)) + (global $global$3 i64 (i64.const 0)) (func $0 (; 1 ;) (result i32 i64 f32) (tuple.make (i32.const 42) @@ -235,7 +239,25 @@ ) (unreachable) ) - (func $6 (; 7 ;) + (func $6 (; 7 ;) (result i32 i64) + (local $0 i32) + (global.set $global$0 + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (global.set $global$1 + (i64.const 7) + ) + (local.get $0) + ) + ) + (tuple.make + (global.get $global$2) + (global.get $global$3) + ) + ) + (func $7 (; 8 ;) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -257,7 +279,7 @@ ) ) ) - (func $7 (; 8 ;) + (func $8 (; 9 ;) (local $0 i32) (drop (block (result i32) @@ -271,7 +293,7 @@ ) ) ) - (func $8 (; 9 ;) + (func $9 (; 10 ;) (local $0 (i32 i64)) (local $1 i32) (local.set $0 @@ -298,7 +320,7 @@ ) ) ) - (func $9 (; 10 ;) (result i32 i64) + (func $10 (; 11 ;) (result i32 i64) (return (tuple.make (i32.const 42) @@ -306,7 +328,7 @@ ) ) ) - (func $10 (; 11 ;) (result i32 i64) + (func $11 (; 12 ;) (result i32 i64) (return (tuple.make (i32.const 42) @@ -314,7 +336,7 @@ ) ) ) - (func $11 (; 12 ;) (result i32 i64) + (func $12 (; 13 ;) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (block $label$1 (result i32 i64) @@ -335,7 +357,7 @@ ) ) ) - (func $12 (; 13 ;) (result i32 i64) + (func $13 (; 14 ;) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 @@ -368,7 +390,7 @@ ) ) ) - (func $13 (; 14 ;) (result i32 i64 anyref) + (func $14 (; 15 ;) (result i32 i64 anyref) (local $0 (i32 i64 nullref)) (local.set $0 (if (result i32 i64 nullref) @@ -397,7 +419,7 @@ ) ) ) - (func $14 (; 15 ;) (result i32 i64) + (func $15 (; 16 ;) (result i32 i64) (local $0 (i32 i64)) (local.set $0 (loop $label$1 (result i32 i64) @@ -416,7 +438,7 @@ ) ) ) - (func $15 (; 16 ;) (result i32 i64) + (func $16 (; 17 ;) (result i32 i64) (local $0 (i32 i64)) (local $1 (i32 i64)) (local.set $1 diff --git a/test/spec/multivalue.wast b/test/spec/multivalue.wast index d6089721d..3891d6983 100644 --- a/test/spec/multivalue.wast +++ b/test/spec/multivalue.wast @@ -1,4 +1,5 @@ (module + (global $global_pair (mut (i32 i64)) (tuple.make (i32.const 0) (i64.const 0))) (func $pair (export "pair") (result i32 i64) (tuple.make (i32.const 42) @@ -9,6 +10,17 @@ (local $x (i32 i64)) (local.get $x) ) + (func (export "tuple-global-get") (result i32 i64) + (global.get $global_pair) + ) + (func (export "tuple-global-set") + (global.set $global_pair + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + ) (func (export "tail-call") (result i32 i64) (return_call $pair) (unreachable) @@ -17,4 +29,7 @@ (assert_return (invoke "pair") (tuple.make (i32.const 42) (i64.const 7))) (assert_return (invoke "tuple-local") (tuple.make (i32.const 0) (i64.const 0))) +(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 0) (i64.const 0))) +(assert_return (invoke "tuple-global-set")) +(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 42) (i64.const 7))) (assert_return (invoke "tail-call") (tuple.make (i32.const 42) (i64.const 7))) |