(module
 (type $0 (func (param i64) (result v128)))
 (type $1 (func (param i64 v128)))
 (memory $0 i64 1 1)
 (func $v128.load (type $0) (param $0 i64) (result v128)
  (v128.load
   (local.get $0)
  )
 )
 (func $v128.store (type $1) (param $0 i64) (param $1 v128)
  (v128.store
   (local.get $0)
   (local.get $1)
  )
 )
 (func $v128.load8_splat (type $0) (param $0 i64) (result v128)
  (v128.load8_splat
   (local.get $0)
  )
 )
 (func $v128.load16_splat (type $0) (param $0 i64) (result v128)
  (v128.load16_splat
   (local.get $0)
  )
 )
 (func $v128.load32_splat (type $0) (param $0 i64) (result v128)
  (v128.load32_splat
   (local.get $0)
  )
 )
 (func $v128.load64_splat (type $0) (param $0 i64) (result v128)
  (v128.load64_splat
   (local.get $0)
  )
 )
 (func $v128.load8x8_u (type $0) (param $0 i64) (result v128)
  (v128.load8x8_u
   (local.get $0)
  )
 )
 (func $v128.load8x8_s (type $0) (param $0 i64) (result v128)
  (v128.load8x8_s
   (local.get $0)
  )
 )
 (func $v128.load16x4_s (type $0) (param $0 i64) (result v128)
  (v128.load16x4_s
   (local.get $0)
  )
 )
 (func $v128.load16x4_u (type $0) (param $0 i64) (result v128)
  (v128.load16x4_u
   (local.get $0)
  )
 )
 (func $v128.load32x2_s (type $0) (param $0 i64) (result v128)
  (v128.load32x2_s
   (local.get $0)
  )
 )
 (func $v128.load32x2_u (type $0) (param $0 i64) (result v128)
  (v128.load32x2_u
   (local.get $0)
  )
 )
 (func $v128.load32_zero (type $0) (param $0 i64) (result v128)
  (v128.load32_zero
   (local.get $0)
  )
 )
 (func $v128.load64_zero (type $0) (param $0 i64) (result v128)
  (v128.load64_zero
   (local.get $0)
  )
 )
)
