summaryrefslogtreecommitdiff
path: root/test/multivalue.wast.fromBinary.noDebugInfo
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-03-05 15:52:44 -0800
committerGitHub <noreply@github.com>2020-03-05 15:52:44 -0800
commit9e3dbb1f668a14341e9aebae479537d4a26095a5 (patch)
tree9857d50c3373c3f6320ca3f2586bd499bc40b224 /test/multivalue.wast.fromBinary.noDebugInfo
parent3a275d0627da443cce93631a64d78e7b3f441416 (diff)
downloadbinaryen-9e3dbb1f668a14341e9aebae479537d4a26095a5.tar.gz
binaryen-9e3dbb1f668a14341e9aebae479537d4a26095a5.tar.bz2
binaryen-9e3dbb1f668a14341e9aebae479537d4a26095a5.zip
Initial multivalue support (#2675)
Implements parsing and emitting of tuple creation and extraction and tuple-typed control flow for both the text and binary formats. TODO: - Extend Precompute/interpreter to handle tuple values - C and JS API support/testing - Figure out how to lower in stack IR - Fuzzing
Diffstat (limited to 'test/multivalue.wast.fromBinary.noDebugInfo')
-rw-r--r--test/multivalue.wast.fromBinary.noDebugInfo439
1 files changed, 439 insertions, 0 deletions
diff --git a/test/multivalue.wast.fromBinary.noDebugInfo b/test/multivalue.wast.fromBinary.noDebugInfo
new file mode 100644
index 000000000..ba4634b47
--- /dev/null
+++ b/test/multivalue.wast.fromBinary.noDebugInfo
@@ -0,0 +1,439 @@
+(module
+ (type $none_=>_i32_i64 (func (result i32 i64)))
+ (type $none_=>_none (func))
+ (type $none_=>_f32_i64_i32 (func (result f32 i64 i32)))
+ (type $none_=>_i32 (func (result i32)))
+ (type $none_=>_i32_i64_f32 (func (result i32 i64 f32)))
+ (type $none_=>_i64 (func (result i64)))
+ (type $none_=>_f32 (func (result f32)))
+ (import "env" "pair" (func $fimport$0 (result i32 i64)))
+ (func $0 (; 1 ;) (result i32 i64 f32)
+ (tuple.make
+ (i32.const 42)
+ (i64.const 7)
+ (f32.const 13)
+ )
+ )
+ (func $1 (; 2 ;) (result i32)
+ (local $0 (i32 i64 f32))
+ (local $1 i64)
+ (local $2 i32)
+ (local.set $0
+ (call $0)
+ )
+ (block (result i32)
+ (local.set $2
+ (tuple.extract 0
+ (local.get $0)
+ )
+ )
+ (drop
+ (block (result i64)
+ (local.set $1
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ (drop
+ (tuple.extract 2
+ (local.get $0)
+ )
+ )
+ (local.get $1)
+ )
+ )
+ (local.get $2)
+ )
+ )
+ (func $2 (; 3 ;) (result i64)
+ (local $0 i64)
+ (local $1 (i32 i64 f32))
+ (local $2 i64)
+ (local $3 i32)
+ (local.set $1
+ (call $0)
+ )
+ (drop
+ (block (result i32)
+ (local.set $3
+ (tuple.extract 0
+ (local.get $1)
+ )
+ )
+ (local.set $0
+ (block (result i64)
+ (local.set $2
+ (tuple.extract 1
+ (local.get $1)
+ )
+ )
+ (drop
+ (tuple.extract 2
+ (local.get $1)
+ )
+ )
+ (local.get $2)
+ )
+ )
+ (local.get $3)
+ )
+ )
+ (local.get $0)
+ )
+ (func $3 (; 4 ;) (result f32)
+ (local $0 f32)
+ (local $1 (i32 i64 f32))
+ (local $2 i64)
+ (local $3 i32)
+ (local.set $1
+ (call $0)
+ )
+ (drop
+ (block (result i32)
+ (local.set $3
+ (tuple.extract 0
+ (local.get $1)
+ )
+ )
+ (drop
+ (block (result i64)
+ (local.set $2
+ (tuple.extract 1
+ (local.get $1)
+ )
+ )
+ (local.set $0
+ (tuple.extract 2
+ (local.get $1)
+ )
+ )
+ (local.get $2)
+ )
+ )
+ (local.get $3)
+ )
+ )
+ (local.get $0)
+ )
+ (func $4 (; 5 ;) (result f32 i64 i32)
+ (local $0 i32)
+ (local $1 i64)
+ (local $2 i64)
+ (local $3 f32)
+ (local $4 f32)
+ (local $5 (i32 i64 f32))
+ (local $6 i64)
+ (local $7 i32)
+ (local $8 i64)
+ (local $9 i32)
+ (local $10 i64)
+ (local $11 i32)
+ (local $12 i64)
+ (local $13 i32)
+ (local $14 f32)
+ (local.set $5
+ (call $0)
+ )
+ (local.set $0
+ (block (result i32)
+ (local.set $7
+ (tuple.extract 0
+ (local.get $5)
+ )
+ )
+ (local.set $1
+ (block (result i64)
+ (local.set $6
+ (tuple.extract 1
+ (local.get $5)
+ )
+ )
+ (local.set $3
+ (tuple.extract 2
+ (local.get $5)
+ )
+ )
+ (local.get $6)
+ )
+ )
+ (local.get $7)
+ )
+ )
+ (drop
+ (block (result i32)
+ (local.set $9
+ (local.get $0)
+ )
+ (drop
+ (block (result i64)
+ (local.set $8
+ (local.get $1)
+ )
+ (local.set $4
+ (local.get $3)
+ )
+ (local.get $8)
+ )
+ )
+ (local.get $9)
+ )
+ )
+ (tuple.make
+ (block (result f32)
+ (local.set $14
+ (local.get $4)
+ )
+ (drop
+ (block (result i32)
+ (local.set $11
+ (local.get $0)
+ )
+ (local.set $2
+ (block (result i64)
+ (local.set $10
+ (local.get $1)
+ )
+ (drop
+ (local.get $3)
+ )
+ (local.get $10)
+ )
+ )
+ (local.get $11)
+ )
+ )
+ (local.get $14)
+ )
+ (local.get $2)
+ (block (result i32)
+ (local.set $13
+ (local.get $0)
+ )
+ (drop
+ (block (result i64)
+ (local.set $12
+ (local.get $1)
+ )
+ (drop
+ (local.get $3)
+ )
+ (local.get $12)
+ )
+ )
+ (local.get $13)
+ )
+ )
+ )
+ (func $5 (; 6 ;)
+ (local $0 (i32 i64))
+ (local $1 i32)
+ (local.set $0
+ (call $fimport$0)
+ )
+ (drop
+ (block (result i32)
+ (local.set $1
+ (tuple.extract 0
+ (local.get $0)
+ )
+ )
+ (drop
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ (local.get $1)
+ )
+ )
+ )
+ (func $6 (; 7 ;)
+ (local $0 i32)
+ (drop
+ (block (result i32)
+ (local.set $0
+ (i32.const 42)
+ )
+ (drop
+ (i64.const 42)
+ )
+ (local.get $0)
+ )
+ )
+ )
+ (func $7 (; 8 ;)
+ (local $0 (i32 i64))
+ (local $1 i32)
+ (local.set $0
+ (block $label$1 (result i32 i64)
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ (drop
+ (block (result i32)
+ (local.set $1
+ (tuple.extract 0
+ (local.get $0)
+ )
+ )
+ (drop
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ (local.get $1)
+ )
+ )
+ )
+ (func $8 (; 9 ;) (result i32 i64)
+ (return
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ (func $9 (; 10 ;) (result i32 i64)
+ (return
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ (func $10 (; 11 ;) (result i32 i64)
+ (local $0 (i32 i64))
+ (local.set $0
+ (block $label$1 (result i32 i64)
+ (br $label$1
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $0)
+ )
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ )
+ (func $11 (; 12 ;) (result i32 i64)
+ (local $0 (i32 i64))
+ (local $1 (i32 i64))
+ (local.set $1
+ (block $label$1 (result i32 i64)
+ (local.set $0
+ (br_if $label$1
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ (i32.const 1)
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $0)
+ )
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $1)
+ )
+ (tuple.extract 1
+ (local.get $1)
+ )
+ )
+ )
+ (func $12 (; 13 ;) (result i32 i64)
+ (local $0 (i32 i64))
+ (local.set $0
+ (if (result i32 i64)
+ (i32.const 1)
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $0)
+ )
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ )
+ (func $13 (; 14 ;) (result i32 i64)
+ (local $0 (i32 i64))
+ (local.set $0
+ (loop $label$1 (result i32 i64)
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $0)
+ )
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ )
+ (func $14 (; 15 ;) (result i32 i64)
+ (local $0 (i32 i64))
+ (local $1 (i32 i64))
+ (local.set $1
+ (block $label$1 (result i32 i64)
+ (local.set $0
+ (block $label$2 (result i32 i64)
+ (br_table $label$1 $label$2
+ (tuple.make
+ (i32.const 42)
+ (i64.const 42)
+ )
+ (i32.const 0)
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $0)
+ )
+ (tuple.extract 1
+ (local.get $0)
+ )
+ )
+ )
+ )
+ (tuple.make
+ (tuple.extract 0
+ (local.get $1)
+ )
+ (tuple.extract 1
+ (local.get $1)
+ )
+ )
+ )
+)
+