blob: dd39d4b34f0e09e72166e4b4caea4b8868ae1860 [file] [log] [blame]
(module
(type $none_=>_i32_i64 (func (result i32 i64)))
(type $none_=>_none (func))
(type $none_=>_i32_i64_externref (func (result i32 i64 externref)))
(type $none_=>_i64 (func (result i64)))
(type $none_=>_f32_i64_i32 (func (result f32 i64 i32)))
(type $none_=>_i32_i64_f32 (func (result i32 i64 f32)))
(type $none_=>_i32 (func (result i32)))
(type $none_=>_f32 (func (result f32)))
(import "env" "pair" (func $pair (result i32 i64)))
(global $g1 (mut i32) (i32.const 0))
(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)
(tuple.make
(i32.const 42)
(i64.const 7)
(f32.const 13)
)
)
(func $get-first (result i32)
(local $0 (i32 i64 f32))
(local $1 i64)
(local $2 i32)
(local.set $0
(call $triple)
)
(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 $get-second (result i64)
(local $0 i64)
(local $1 (i32 i64 f32))
(local $2 i64)
(local $3 i32)
(local.set $1
(call $triple)
)
(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 $get-third (result f32)
(local $0 f32)
(local $1 (i32 i64 f32))
(local $2 i64)
(local $3 i32)
(local.set $1
(call $triple)
)
(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 $reverse (result f32 i64 i32)
(local $x 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 $triple)
)
(local.set $x
(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 $x)
)
(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 $x)
)
(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 $x)
)
(drop
(block (result i64)
(local.set $12
(local.get $1)
)
(drop
(local.get $3)
)
(local.get $12)
)
)
(local.get $13)
)
)
)
(func $unreachable (result i64)
(drop
(i32.const 42)
)
(drop
(i64.const 7)
)
(unreachable)
)
(func $global (result i32 i64)
(local $0 i32)
(global.set $g1
(block (result i32)
(local.set $0
(i32.const 42)
)
(global.set $g2
(i64.const 7)
)
(local.get $0)
)
)
(tuple.make
(global.get $global$2)
(global.get $global$3)
)
)
(func $drop-call
(local $0 (i32 i64))
(local $1 i32)
(local.set $0
(call $pair)
)
(drop
(block (result i32)
(local.set $1
(tuple.extract 0
(local.get $0)
)
)
(drop
(tuple.extract 1
(local.get $0)
)
)
(local.get $1)
)
)
)
(func $drop-tuple-make
(local $0 i32)
(drop
(block (result i32)
(local.set $0
(i32.const 42)
)
(drop
(i64.const 42)
)
(local.get $0)
)
)
)
(func $drop-block
(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 $mv-return (result i32 i64)
(return
(tuple.make
(i32.const 42)
(i64.const 42)
)
)
)
(func $mv-return-in-block (result i32 i64)
(return
(tuple.make
(i32.const 42)
(i64.const 42)
)
)
)
(func $mv-block-break (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 $mv-block-br-if (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 $mv-if (result i32 i64 externref)
(local $0 (i32 i64 externref))
(local.set $0
(if (result i32 i64 externref)
(i32.const 1)
(tuple.make
(i32.const 42)
(i64.const 42)
(ref.null extern)
)
(tuple.make
(i32.const 42)
(i64.const 42)
(ref.null extern)
)
)
)
(tuple.make
(tuple.extract 0
(local.get $0)
)
(tuple.extract 1
(local.get $0)
)
(tuple.extract 2
(local.get $0)
)
)
)
(func $mv-loop (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 $mv-switch (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)
)
)
)
)