wasmtime-cli 46.0.0

Command-line interface for Wasmtime
Documentation
;;! target = "x86_64"

(module
  ;; These two types should be deduped to the same `ir::Signature` in the
  ;; translated CLIF.
  (type (func (result i32)))
  (type (func (result i32)))

  (import "" "" (table 0 funcref))

  (func (param i32) (result i32 i32)
    local.get 0
    call_indirect (type 0)
    local.get 0
    call_indirect (type 1)
  )
)

;; function u0:0(i64 vmctx, i64, i32) -> i32, i32 tail {
;;     region0 = 1073741824 "PublicTable"
;;     gv0 = vmctx
;;     gv1 = load.i64 notrap aligned readonly gv0+8
;;     gv2 = load.i64 notrap aligned gv1+24
;;     gv3 = vmctx
;;     gv4 = load.i64 notrap aligned readonly can_move gv3+48
;;     gv5 = load.i64 notrap aligned gv4
;;     gv6 = load.i64 notrap aligned gv4+8
;;     sig0 = (i64 vmctx, i64) -> i32 tail
;;     sig1 = (i64 vmctx, i32, i64) -> i64 tail
;;     fn0 = colocated u805306368:7 sig1
;;     stack_limit = gv2
;;
;;                                 block0(v0: i64, v1: i64, v2: i32):
;; @002d                               v64 = load.i64 notrap aligned readonly can_move v0+48
;; @002d                               v5 = load.i64 notrap aligned v64+8
;; @002d                               v6 = ireduce.i32 v5
;; @002d                               v7 = icmp uge v2, v6
;; @002d                               v8 = uextend.i64 v2
;; @002d                               v62 = load.i64 notrap aligned readonly can_move v0+48
;; @002d                               v9 = load.i64 notrap aligned v62
;; @002d                               v10 = iconst.i64 3
;; @002d                               v11 = ishl v8, v10  ; v10 = 3
;; @002d                               v12 = iadd v9, v11
;; @002d                               v13 = iconst.i64 0
;; @002d                               v14 = select_spectre_guard v7, v13, v12  ; v13 = 0
;; @002d                               v15 = load.i64 user6 aligned region0 v14
;; @002d                               v16 = iconst.i64 -2
;; @002d                               v17 = band v15, v16  ; v16 = -2
;; @002d                               brif v15, block3(v17), block2
;;
;;                                 block2 cold:
;; @002d                               v19 = iconst.i32 0
;; @002d                               v21 = uextend.i64 v2
;; @002d                               v22 = call fn0(v0, v19, v21)  ; v19 = 0
;; @002d                               jump block3(v22)
;;
;;                                 block3(v18: i64):
;; @002d                               v24 = load.i64 notrap aligned readonly can_move v0+40
;; @002d                               v25 = load.i32 notrap aligned readonly can_move v24
;; @002d                               v26 = load.i32 user7 aligned readonly v18+16
;; @002d                               v27 = icmp eq v26, v25
;; @002d                               trapz v27, user8
;; @002d                               v28 = load.i64 notrap aligned readonly v18+8
;; @002d                               v29 = load.i64 notrap aligned readonly v18+24
;; @002d                               v30 = call_indirect sig0, v28(v29, v0)
;; @0032                               v60 = load.i64 notrap aligned readonly can_move v0+48
;; @0032                               v32 = load.i64 notrap aligned v60+8
;; @0032                               v33 = ireduce.i32 v32
;; @0032                               v34 = icmp.i32 uge v2, v33
;; @0032                               v35 = uextend.i64 v2
;; @0032                               v58 = load.i64 notrap aligned readonly can_move v0+48
;; @0032                               v36 = load.i64 notrap aligned v58
;; @0032                               v37 = iconst.i64 3
;; @0032                               v38 = ishl v35, v37  ; v37 = 3
;; @0032                               v39 = iadd v36, v38
;; @0032                               v40 = iconst.i64 0
;; @0032                               v41 = select_spectre_guard v34, v40, v39  ; v40 = 0
;; @0032                               v42 = load.i64 user6 aligned region0 v41
;; @0032                               v43 = iconst.i64 -2
;; @0032                               v44 = band v42, v43  ; v43 = -2
;; @0032                               brif v42, block5(v44), block4
;;
;;                                 block4 cold:
;; @0032                               v46 = iconst.i32 0
;; @0032                               v48 = uextend.i64 v2
;; @0032                               v49 = call fn0(v0, v46, v48)  ; v46 = 0
;; @0032                               jump block5(v49)
;;
;;                                 block5(v45: i64):
;; @0032                               v51 = load.i64 notrap aligned readonly can_move v0+40
;; @0032                               v52 = load.i32 notrap aligned readonly can_move v51
;; @0032                               v53 = load.i32 user7 aligned readonly v45+16
;; @0032                               v54 = icmp eq v53, v52
;; @0032                               trapz v54, user8
;; @0032                               v55 = load.i64 notrap aligned readonly v45+8
;; @0032                               v56 = load.i64 notrap aligned readonly v45+24
;; @0032                               v57 = call_indirect sig0, v55(v56, v0)
;; @0035                               jump block1
;;
;;                                 block1:
;; @0035                               return v30, v57
;; }