1;;! target = "x86_64"
2
3(module
4  (func $imported (import "env" "f") (param i32) (result i32))
5  (func $local (result externref externref funcref funcref)
6    global.get 0
7    global.get 1
8    global.get 2
9    global.get 3)
10
11  (global (export "externref-imported") externref (ref.null extern))
12  (global (export "externref-local") externref (ref.null extern))
13  (global (export "funcref-imported") funcref (ref.func $imported))
14  (global (export "funcref-local") funcref (ref.func $local)))
15
16;; function u0:0(i64 vmctx, i64) -> i32, i32, i64, i64 tail {
17;;     gv0 = vmctx
18;;     gv1 = load.i64 notrap aligned readonly gv0+8
19;;     gv2 = load.i64 notrap aligned gv1+24
20;;     gv3 = vmctx
21;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
22;;     gv5 = load.i64 notrap aligned readonly can_move gv4+32
23;;     gv6 = load.i64 notrap aligned gv4+40
24;;     stack_limit = gv2
25;;
26;;                                 block0(v0: i64, v1: i64):
27;;                                     v113 = iconst.i64 80
28;; @008f                               v7 = iadd v0, v113  ; v113 = 80
29;; @008f                               v8 = load.i32 notrap aligned readonly can_move v7
30;;                                     v112 = iconst.i32 1
31;; @008f                               v9 = band v8, v112  ; v112 = 1
32;;                                     v111 = iconst.i32 0
33;; @008f                               v10 = icmp eq v8, v111  ; v111 = 0
34;; @008f                               v11 = uextend.i32 v10
35;; @008f                               v12 = bor v9, v11
36;; @008f                               brif v12, block4, block2
37;;
38;;                                 block2:
39;; @008f                               v13 = uextend.i64 v8
40;; @008f                               v109 = load.i64 notrap aligned readonly can_move v0+8
41;; @008f                               v14 = load.i64 notrap aligned readonly can_move v109+32
42;; @008f                               v15 = iadd v14, v13
43;; @008f                               v16 = load.i32 notrap aligned v15
44;; @008f                               v17 = iconst.i32 2
45;; @008f                               v18 = band v16, v17  ; v17 = 2
46;; @008f                               brif v18, block4, block3
47;;
48;;                                 block3:
49;; @008f                               v20 = load.i64 notrap aligned readonly v0+32
50;; @008f                               v21 = load.i32 notrap aligned v20
51;; @008f                               v22 = uextend.i64 v8
52;; @008f                               v107 = load.i64 notrap aligned readonly can_move v0+8
53;; @008f                               v23 = load.i64 notrap aligned readonly can_move v107+32
54;; @008f                               v24 = iadd v23, v22
55;; @008f                               v25 = iconst.i64 16
56;; @008f                               v26 = iadd v24, v25  ; v25 = 16
57;; @008f                               store notrap aligned v21, v26
58;; @008f                               v27 = iconst.i32 2
59;; @008f                               v28 = bor.i32 v16, v27  ; v27 = 2
60;; @008f                               v29 = uextend.i64 v8
61;; @008f                               v105 = load.i64 notrap aligned readonly can_move v0+8
62;; @008f                               v30 = load.i64 notrap aligned readonly can_move v105+32
63;; @008f                               v31 = iadd v30, v29
64;; @008f                               store notrap aligned v28, v31
65;; @008f                               v32 = uextend.i64 v8
66;; @008f                               v103 = load.i64 notrap aligned readonly can_move v0+8
67;; @008f                               v33 = load.i64 notrap aligned readonly can_move v103+32
68;; @008f                               v34 = iadd v33, v32
69;; @008f                               v35 = iconst.i64 8
70;; @008f                               v36 = iadd v34, v35  ; v35 = 8
71;; @008f                               v37 = load.i64 notrap aligned v36
72;;                                     v102 = iconst.i64 1
73;; @008f                               v38 = iadd v37, v102  ; v102 = 1
74;; @008f                               v39 = uextend.i64 v8
75;; @008f                               v100 = load.i64 notrap aligned readonly can_move v0+8
76;; @008f                               v40 = load.i64 notrap aligned readonly can_move v100+32
77;; @008f                               v41 = iadd v40, v39
78;; @008f                               v42 = iconst.i64 8
79;; @008f                               v43 = iadd v41, v42  ; v42 = 8
80;; @008f                               store notrap aligned v38, v43
81;; @008f                               store.i32 notrap aligned v8, v20
82;; @008f                               jump block4
83;;
84;;                                 block4:
85;;                                     v99 = iconst.i64 96
86;; @0091                               v45 = iadd.i64 v0, v99  ; v99 = 96
87;; @0091                               v46 = load.i32 notrap aligned readonly can_move v45
88;;                                     v98 = iconst.i32 1
89;; @0091                               v47 = band v46, v98  ; v98 = 1
90;;                                     v97 = iconst.i32 0
91;; @0091                               v48 = icmp eq v46, v97  ; v97 = 0
92;; @0091                               v49 = uextend.i32 v48
93;; @0091                               v50 = bor v47, v49
94;; @0091                               brif v50, block7, block5
95;;
96;;                                 block5:
97;; @0091                               v51 = uextend.i64 v46
98;; @0091                               v95 = load.i64 notrap aligned readonly can_move v0+8
99;; @0091                               v52 = load.i64 notrap aligned readonly can_move v95+32
100;; @0091                               v53 = iadd v52, v51
101;; @0091                               v54 = load.i32 notrap aligned v53
102;; @0091                               v55 = iconst.i32 2
103;; @0091                               v56 = band v54, v55  ; v55 = 2
104;; @0091                               brif v56, block7, block6
105;;
106;;                                 block6:
107;; @0091                               v58 = load.i64 notrap aligned readonly v0+32
108;; @0091                               v59 = load.i32 notrap aligned v58
109;; @0091                               v60 = uextend.i64 v46
110;; @0091                               v93 = load.i64 notrap aligned readonly can_move v0+8
111;; @0091                               v61 = load.i64 notrap aligned readonly can_move v93+32
112;; @0091                               v62 = iadd v61, v60
113;; @0091                               v63 = iconst.i64 16
114;; @0091                               v64 = iadd v62, v63  ; v63 = 16
115;; @0091                               store notrap aligned v59, v64
116;; @0091                               v65 = iconst.i32 2
117;; @0091                               v66 = bor.i32 v54, v65  ; v65 = 2
118;; @0091                               v67 = uextend.i64 v46
119;; @0091                               v91 = load.i64 notrap aligned readonly can_move v0+8
120;; @0091                               v68 = load.i64 notrap aligned readonly can_move v91+32
121;; @0091                               v69 = iadd v68, v67
122;; @0091                               store notrap aligned v66, v69
123;; @0091                               v70 = uextend.i64 v46
124;; @0091                               v89 = load.i64 notrap aligned readonly can_move v0+8
125;; @0091                               v71 = load.i64 notrap aligned readonly can_move v89+32
126;; @0091                               v72 = iadd v71, v70
127;; @0091                               v73 = iconst.i64 8
128;; @0091                               v74 = iadd v72, v73  ; v73 = 8
129;; @0091                               v75 = load.i64 notrap aligned v74
130;;                                     v88 = iconst.i64 1
131;; @0091                               v76 = iadd v75, v88  ; v88 = 1
132;; @0091                               v77 = uextend.i64 v46
133;; @0091                               v86 = load.i64 notrap aligned readonly can_move v0+8
134;; @0091                               v78 = load.i64 notrap aligned readonly can_move v86+32
135;; @0091                               v79 = iadd v78, v77
136;; @0091                               v80 = iconst.i64 8
137;; @0091                               v81 = iadd v79, v80  ; v80 = 8
138;; @0091                               store notrap aligned v76, v81
139;; @0091                               store.i32 notrap aligned v46, v58
140;; @0091                               jump block7
141;;
142;;                                 block7:
143;; @0093                               v83 = load.i64 notrap aligned table v0+112
144;; @0095                               v85 = load.i64 notrap aligned table v0+128
145;; @0097                               jump block1
146;;
147;;                                 block1:
148;; @0097                               return v8, v46, v83, v85
149;; }
150