# Expression
# Block
(block $theName (result i32)
 (i32.const 0)
)

# If
(if (result i32)
 (i32.const 4)
 (then
  (i32.const 5)
 )
 (else
  (i32.const 6)
 )
)

(if (result i32)
 (i32.const 4)
 (then
  (i32.const 5)
 )
)

# Loop
(loop $theName
 (drop
  (i32.const 1)
 )
)

# Break
(br_if $theNewName
 (i32.const 4)
 (i32.const 3)
)

# Switch
(br_table $x $y $c
 (i32.const 4)
 (i32.const 3)
)

# Call
(call $bar
 (i32.const 7)
 (i32.const 6)
)

# CallIndirect
(call_indirect $0 (type $func.0)
 (i32.const 7)
 (i32.const 6)
 (i32.const 9000)
)

# LocalGet
(local.get $2)

# LocalSet
(local.set $2
 (i32.const 3)
)

# GlobalGet
(global.get $b)

# GlobalSet
(global.set $b
 (f64.const 3)
)

# MemorySize
(memory.size $0)

# MemoryGrow
(memory.grow $0
 (i32.const 2)
)

# Load
(i64.atomic.load $0 offset=32 align=4
 (i32.const 128)
)

# Store
(i64.atomic.store $0 offset=32 align=4
 (i32.const 128)
 (i32.const 2)
)

# Const
(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)

# Unary
(i64.eqz
 (i64.const 2)
)

# Binary
(i64.add
 (i64.const 3)
 (i64.const 4)
)

# Select
(select
 (i64.const 5)
 (i64.const 6)
 (i32.const 4)
)

# Drop
(drop
 (i32.const 2)
)

# Return
(return
 (i32.const 2)
)

# AtomicRMW
(i64.atomic.rmw16.sub_u $0 offset=16
 (i32.const 4)
 (i64.const 5)
)

# AtomicCmpxchg
(i64.atomic.rmw16.cmpxchg_u $0 offset=16
 (i32.const 5)
 (i64.const 6)
 (i64.const 7)
)

# AtomicWait
(memory.atomic.wait64 $0
 (i32.const 5)
 (i32.const 6)
 (i64.const 7)
)

# AtomicNotify
(memory.atomic.notify $0
 (i32.const 3)
 (i32.const 4)
)

# AtomicFence
(atomic.fence)

# SIMDExtract
(i16x8.extract_lane_s 1
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
)

# SIMDReplace
(i16x8.replace_lane 1
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
 (i32.const 2)
)

# SIMDShuffle
(i8x16.shuffle 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
 (v128.const i32x4 0x02020202 0x02020202 0x02020202 0x02020202)
)

# SIMDTernary
(v128.bitselect
 (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)
 (v128.const i32x4 0x05040302 0x09080706 0x0d0c0b0a 0x11100f0e)
 (v128.const i32x4 0x06050403 0x0a090807 0x0e0d0c0b 0x1211100f)
)


# SIMDShift
(i8x16.shr_s
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
 (i32.const 2)
)

# SIMDLoad
(v128.load8_splat $0 offset=32 align=4
 (i32.const 2)
)

# SIMDLoadStoreLane
(v128.load16_lane $0 offset=32 2
 (i32.const 2)
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
)

(v128.store16_lane $0 offset=32 2
 (i32.const 2)
 (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)
)

# MemoryInit
(memory.init $0 $5
 (i32.const 6)
 (i32.const 7)
 (i32.const 8)
)

# DataDrop
(data.drop $2)

# MemoryCopy
(memory.copy $0 $0
 (i32.const 4)
 (i32.const 5)
 (i32.const 6)
)

# MemoryFill
(memory.fill $0
 (i32.const 4)
 (i32.const 5)
 (i32.const 6)
)

# RefIsNull
(ref.is_null
 (local.get $2)
)

# RefAs
(ref.as_non_null
 (local.get $2)
)

# RefFunc
(ref.func $b)

# RefEq
(ref.eq
 (local.get $2)
 (local.get $3)
)

# Try
(try (result i32)
 (do
  (i32.const 1)
 )
 (catch $tag1
  (i32.const 2)
 )
 (catch_all
  (i32.const 3)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (catch $tag1
  (i32.const 5)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (catch $tag1
  (i32.const 6)
 )
 (catch $tag2
  (i32.const 5)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (catch $tag1
  (i32.const 6)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (catch $tag2
  (i32.const 8)
 )
 (catch $tag1
  (i32.const 10)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (catch $tag2
  (i32.const 8)
 )
 (catch $tag1
  (i32.const 10)
 )
)

(try (result i32)
 (do
  (i32.const 4)
 )
 (delegate $try_outer)
)

# Throw
(throw $bar
 (i32.const 6)
 (i32.const 7)
)

# Rethrow
(rethrow $l1)

# TupleMake
(tuple.make 2
 (i32.const 6)
 (i32.const 7)
)

# TupleExtract
(tuple.extract 2 0
 (tuple.make 2
  (f64.const 3)
  (f64.const 4)
 )
)

# RefI31
(ref.i31
 (local.get $2)
)

# I31Get
(i31.get_u
 (local.get $2)
)

