;;! target = 'x86_64'
;;! test = 'optimize'
;;! flags = '-Wcustom-page-sizes'
(module
(memory $m32 1)
(func $fill32 (param i32 i32)
local.get 0
i32.const 0
local.get 1
memory.fill $m32
)
(memory $m64 i64 1)
(func $fill64 (param i64 i64)
local.get 0
i32.const 0
local.get 1
memory.fill $m64
)
(memory $m32p1 65536 (pagesize 1))
(func $fill32p1 (param i32 i32)
local.get 0
i32.const 0
local.get 1
memory.fill $m32p1
)
(memory $m64p1 i64 65536 (pagesize 1))
(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(i64 vmctx, i64, i32, i32) tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+24
;; gv3 = vmctx
;; gv4 = load.i64 notrap aligned gv3+96
;; gv5 = load.i64 notrap aligned readonly can_move gv3+88
;; sig0 = (i64 vmctx, i64, i32, i64) tail
;; fn0 = colocated u805306368:2 sig0
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64, v2: i32, v3: i32):
;; @003c v6 = load.i64 notrap aligned v0+96
;; @003c v7 = uextend.i64 v2
;; @003c v8 = uextend.i64 v3
;; @003c v11 = iadd v7, v8
;; @003c v12 = icmp ugt v11, v6
;; @003c trapnz v12, heap_oob
;; @003c v13 = load.i64 notrap aligned readonly can_move v0+88
;; @003c v17 = iadd v13, v7
;; @0038 v4 = iconst.i32 0
;; @003c call fn0(v0, v17, v4, v8) ; v4 = 0
;; @003f jump block1
;;
;; block1:
;; @003f return
;; }
;;
;; function u0:1(i64 vmctx, i64, i64, i64) tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+24
;; gv3 = vmctx
;; gv4 = load.i64 notrap aligned gv3+112
;; gv5 = load.i64 notrap aligned can_move gv3+104
;; sig0 = (i64 vmctx, i64, i32, i64) tail
;; fn0 = colocated u805306368:2 sig0
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64, v2: i64, v3: i64):
;; @0048 v6 = load.i64 notrap aligned v0+112
;; @0048 v7 = uadd_overflow_trap v2, v3, heap_oob
;; @0048 v8 = icmp ugt v7, v6
;; @0048 trapnz v8, heap_oob
;; @0048 v9 = load.i64 notrap aligned can_move v0+104
;; @0048 v12 = iadd v9, v2
;; @0044 v4 = iconst.i32 0
;; @0048 call fn0(v0, v12, v4, v3) ; v4 = 0
;; @004b jump block1
;;
;; block1:
;; @004b return
;; }
;;
;; function u0:2(i64 vmctx, i64, i32, i32) tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+24
;; gv3 = vmctx
;; gv4 = load.i64 notrap aligned gv3+128
;; gv5 = load.i64 notrap aligned readonly can_move gv3+120
;; sig0 = (i64 vmctx, i64, i32, i64) tail
;; fn0 = colocated u805306368:2 sig0
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64, v2: i32, v3: i32):
;; @0054 v6 = load.i64 notrap aligned v0+128
;; @0054 v7 = uextend.i64 v2
;; @0054 v8 = uextend.i64 v3
;; @0054 v11 = iadd v7, v8
;; @0054 v12 = icmp ugt v11, v6
;; @0054 trapnz v12, heap_oob
;; @0054 v13 = load.i64 notrap aligned readonly can_move v0+120
;; @0054 v17 = iadd v13, v7
;; @0050 v4 = iconst.i32 0
;; @0054 call fn0(v0, v17, v4, v8) ; v4 = 0
;; @0057 jump block1
;;
;; block1:
;; @0057 return
;; }
;;
;; function u0:3(i64 vmctx, i64, i64, i64) tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+24
;; gv3 = vmctx
;; gv4 = load.i64 notrap aligned gv3+144
;; gv5 = load.i64 notrap aligned can_move gv3+136
;; sig0 = (i64 vmctx, i64, i32, i64) tail
;; fn0 = colocated u805306368:2 sig0
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64, v2: i64, v3: i64):
;; @0060 v6 = load.i64 notrap aligned v0+144
;; @0060 v7 = uadd_overflow_trap v2, v3, heap_oob
;; @0060 v8 = icmp ugt v7, v6
;; @0060 trapnz v8, heap_oob
;; @0060 v9 = load.i64 notrap aligned can_move v0+136
;; @0060 v12 = iadd v9, v2
;; @005c v4 = iconst.i32 0
;; @0060 call fn0(v0, v12, v4, v3) ; v4 = 0
;; @0063 jump block1
;;
;; block1:
;; @0063 return
;; }
;;
;; function u0:4(i64 vmctx, i64, i32, i32) tail {
;; gv0 = vmctx
;; gv1 = load.i64 notrap aligned readonly gv0+8
;; gv2 = load.i64 notrap aligned gv1+24
;; gv3 = vmctx
;; gv4 = load.i64 notrap aligned gv3+160
;; gv5 = load.i64 notrap aligned readonly can_move gv3+152
;; sig0 = (i64 vmctx, i64, i32, i64) tail
;; fn0 = colocated u805306368:2 sig0
;; stack_limit = gv2
;;
;; block0(v0: i64, v1: i64, v2: i32, v3: i32):
;; @006c v6 = load.i64 notrap aligned v0+160
;; @006c v7 = uextend.i64 v2
;; @006c v8 = uextend.i64 v3
;; @006c v11 = iadd v7, v8
;; @006c v12 = icmp ugt v11, v6
;; @006c trapnz v12, heap_oob
;; @006c v13 = load.i64 notrap aligned readonly can_move v0+152
;; @006c v17 = iadd v13, v7
;; @0068 v4 = iconst.i32 0
;; @006c call fn0(v0, v17, v4, v8) ; v4 = 0
;; @006f jump block1
;;
;; block1:
;; @006f return
;; }