xref: /wasmtime-44.0.1/tests/disas/fibonacci.wat (revision 2f7dbd61)
1;;! target = "x86_64"
2
3(module
4  (memory 1)
5  (func $main (local i32 i32 i32 i32)
6    (local.set 0 (i32.const 0))
7    (local.set 1 (i32.const 1))
8    (local.set 2 (i32.const 1))
9    (local.set 3 (i32.const 0))
10    (block
11    (loop
12        (br_if 1 (i32.gt_s (local.get 0) (i32.const 5)))
13        (local.set 3 (local.get 2))
14        (local.set 2 (i32.add (local.get 2) (local.get 1)))
15        (local.set 1 (local.get 3))
16        (local.set 0 (i32.add (local.get 0) (i32.const 1)))
17        (br 0)
18    )
19    )
20    (i32.store (i32.const 0) (local.get 2))
21  )
22  (start $main)
23  (data (i32.const 0) "0000")
24)
25
26;; function u0:0(i64 vmctx, i64) tail {
27;;     gv0 = vmctx
28;;     gv1 = load.i64 notrap aligned readonly gv0+8
29;;     gv2 = load.i64 notrap aligned gv1+24
30;;     gv3 = vmctx
31;;     gv4 = load.i64 notrap aligned gv3+64
32;;     gv5 = load.i64 notrap aligned readonly can_move gv3+56
33;;     stack_limit = gv2
34;;
35;;                                 block0(v0: i64, v1: i64):
36;; @001f                               v2 = iconst.i32 0
37;; @0021                               v3 = iconst.i32 0
38;; @0025                               v4 = iconst.i32 1
39;; @0029                               v5 = iconst.i32 1
40;; @002d                               v6 = iconst.i32 0
41;; @0033                               jump block3(v3, v5, v4)  ; v3 = 0, v5 = 1, v4 = 1
42;;
43;;                                 block3(v7: i32, v11: i32, v12: i32):
44;; @0037                               v8 = iconst.i32 5
45;; @0039                               v9 = icmp sgt v7, v8  ; v8 = 5
46;; @0039                               v10 = uextend.i32 v9
47;; @003a                               brif v10, block2, block5
48;;
49;;                                 block5:
50;; @0044                               v13 = iadd.i32 v11, v12
51;; @004d                               v14 = iconst.i32 1
52;; @004f                               v15 = iadd.i32 v7, v14  ; v14 = 1
53;; @0052                               jump block3(v15, v13, v11)
54;;
55;;                                 block2:
56;; @0056                               v16 = iconst.i32 0
57;; @005a                               v17 = uextend.i64 v16  ; v16 = 0
58;; @005a                               v18 = load.i64 notrap aligned readonly can_move v0+56
59;; @005a                               v19 = iadd v18, v17
60;; @005a                               store.i32 little heap v11, v19
61;; @005d                               jump block1
62;;
63;;                                 block1:
64;; @005d                               return
65;; }
66