wasmtime-cli 46.0.1

Command-line interface for Wasmtime
Documentation
;;! target = 'pulley32'
;;! test = 'optimize'
;;! flags = '-Wcustom-page-sizes'

(module
  (memory $m32 1)
  (memory $m64 i64 1)

  (memory $m32p1 65536 (pagesize 1))
  (memory $m64p1 i64 65536 (pagesize 1))

  (func $fill32 (param i32 i32)
    local.get 0
    i32.const 0
    local.get 1
    memory.fill $m32
  )

  (func $fill64 (param i64 i64)
    local.get 0
    i32.const 0
    local.get 1
    memory.fill $m64
  )

  (func $fill32p1 (param i32 i32)
    local.get 0
    i32.const 0
    local.get 1
    memory.fill $m32p1
  )

  (func $fill64p1 (param i64 i64)
    local.get 0
    i32.const 0
    local.get 1
    memory.fill $m64p1
  )

  (memory $empty 0 0)

  (func $fill-empty (param i32 i32)
    local.get 0
    i32.const 0
    local.get 1
    memory.fill $empty
  )
)
;; function u0:0(i32 vmctx, i32, i32, i32) tail {
;;     gv0 = vmctx
;;     gv1 = load.i32 notrap aligned gv0+48
;;     gv2 = load.i32 notrap aligned can_move gv0+44
;;     sig0 = (i32 vmctx, i32, i32, i32) tail
;;     fn0 = colocated u805306368:2 sig0
;;
;;                                 block0(v0: i32, v1: i32, v2: i32, v3: i32):
;; @003c                               v6 = load.i32 notrap aligned v0+48
;; @003c                               v7 = uextend.i64 v2
;; @003c                               v8 = uextend.i64 v3
;; @003c                               v11 = iadd v7, v8
;; @003c                               v12 = uextend.i64 v6
;; @003c                               v13 = icmp ugt v11, v12
;; @003c                               trapnz v13, heap_oob
;; @003c                               v14 = load.i32 notrap aligned can_move v0+44
;; @003c                               v17 = iadd v14, v2
;; @0038                               v4 = iconst.i32 0
;; @003c                               call fn0(v0, v17, v4, v3)  ; v4 = 0
;; @003f                               jump block1
;;
;;                                 block1:
;; @003f                               return
;; }
;;
;; function u0:1(i32 vmctx, i32, i64, i64) tail {
;;     gv0 = vmctx
;;     gv1 = load.i32 notrap aligned gv0+56
;;     gv2 = load.i32 notrap aligned can_move gv0+52
;;     sig0 = (i32 vmctx, i32, i32, i32) tail
;;     fn0 = colocated u805306368:2 sig0
;;
;;                                 block0(v0: i32, v1: i32, v2: i64, v3: i64):
;; @0048                               v6 = load.i32 notrap aligned v0+56
;; @0048                               v7 = uadd_overflow_trap v2, v3, heap_oob
;; @0048                               v8 = uextend.i64 v6
;; @0048                               v9 = icmp ugt v7, v8
;; @0048                               trapnz v9, heap_oob
;; @0048                               v10 = load.i32 notrap aligned can_move v0+52
;; @0048                               v11 = ireduce.i32 v2
;; @0048                               v14 = iadd v10, v11
;; @0044                               v4 = iconst.i32 0
;; @0048                               v15 = ireduce.i32 v3
;; @0048                               call fn0(v0, v14, v4, v15)  ; v4 = 0
;; @004b                               jump block1
;;
;;                                 block1:
;; @004b                               return
;; }
;;
;; function u0:2(i32 vmctx, i32, i32, i32) tail {
;;     gv0 = vmctx
;;     gv1 = load.i32 notrap aligned gv0+64
;;     gv2 = load.i32 notrap aligned can_move gv0+60
;;     sig0 = (i32 vmctx, i32, i32, i32) tail
;;     fn0 = colocated u805306368:2 sig0
;;
;;                                 block0(v0: i32, v1: i32, v2: i32, v3: i32):
;; @0054                               v6 = load.i32 notrap aligned v0+64
;; @0054                               v7 = uextend.i64 v2
;; @0054                               v8 = uextend.i64 v3
;; @0054                               v11 = iadd v7, v8
;; @0054                               v12 = uextend.i64 v6
;; @0054                               v13 = icmp ugt v11, v12
;; @0054                               trapnz v13, heap_oob
;; @0054                               v14 = load.i32 notrap aligned can_move v0+60
;; @0054                               v17 = iadd v14, v2
;; @0050                               v4 = iconst.i32 0
;; @0054                               call fn0(v0, v17, v4, v3)  ; v4 = 0
;; @0057                               jump block1
;;
;;                                 block1:
;; @0057                               return
;; }
;;
;; function u0:3(i32 vmctx, i32, i64, i64) tail {
;;     gv0 = vmctx
;;     gv1 = load.i32 notrap aligned gv0+72
;;     gv2 = load.i32 notrap aligned can_move gv0+68
;;     sig0 = (i32 vmctx, i32, i32, i32) tail
;;     fn0 = colocated u805306368:2 sig0
;;
;;                                 block0(v0: i32, v1: i32, v2: i64, v3: i64):
;; @0060                               v6 = load.i32 notrap aligned v0+72
;; @0060                               v7 = uadd_overflow_trap v2, v3, heap_oob
;; @0060                               v8 = uextend.i64 v6
;; @0060                               v9 = icmp ugt v7, v8
;; @0060                               trapnz v9, heap_oob
;; @0060                               v10 = load.i32 notrap aligned can_move v0+68
;; @0060                               v11 = ireduce.i32 v2
;; @0060                               v14 = iadd v10, v11
;; @005c                               v4 = iconst.i32 0
;; @0060                               v15 = ireduce.i32 v3
;; @0060                               call fn0(v0, v14, v4, v15)  ; v4 = 0
;; @0063                               jump block1
;;
;;                                 block1:
;; @0063                               return
;; }
;;
;; function u0:4(i32 vmctx, i32, i32, i32) tail {
;;     gv0 = vmctx
;;     gv1 = load.i32 notrap aligned gv0+80
;;     gv2 = load.i32 notrap aligned readonly can_move gv0+76
;;     sig0 = (i32 vmctx, i32, i32, i32) tail
;;     fn0 = colocated u805306368:2 sig0
;;
;;                                 block0(v0: i32, v1: i32, v2: i32, v3: i32):
;; @006c                               v6 = load.i32 notrap aligned v0+80
;; @006c                               v7 = uextend.i64 v2
;; @006c                               v8 = uextend.i64 v3
;; @006c                               v11 = iadd v7, v8
;; @006c                               v12 = uextend.i64 v6
;; @006c                               v13 = icmp ugt v11, v12
;; @006c                               trapnz v13, heap_oob
;; @006c                               v14 = load.i32 notrap aligned readonly can_move v0+76
;; @006c                               v17 = iadd v14, v2
;; @0068                               v4 = iconst.i32 0
;; @006c                               call fn0(v0, v17, v4, v3)  ; v4 = 0
;; @006f                               jump block1
;;
;;                                 block1:
;; @006f                               return
;; }