diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2020-03-05 15:52:44 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-05 15:52:44 -0800 |
commit | 9e3dbb1f668a14341e9aebae479537d4a26095a5 (patch) | |
tree | 9857d50c3373c3f6320ca3f2586bd499bc40b224 /test/multivalue.wast.fromBinary.noDebugInfo | |
parent | 3a275d0627da443cce93631a64d78e7b3f441416 (diff) | |
download | binaryen-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.noDebugInfo | 439 |
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) + ) + ) + ) +) + |