summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/multivalue.wast16
-rw-r--r--test/multivalue.wast.from-wast37
-rw-r--r--test/multivalue.wast.fromBinary42
-rw-r--r--test/multivalue.wast.fromBinary.noDebugInfo42
-rw-r--r--test/spec/multivalue.wast15
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)))