File: fib.wast

package info (click to toggle)
rust-wasmtime 26.0.1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 48,492 kB
  • sloc: ansic: 4,003; sh: 561; javascript: 542; cpp: 254; asm: 175; ml: 96; makefile: 55
file content (97 lines) | stat: -rw-r--r-- 2,829 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
(module
  (func $fib (export "fib") (param $n i32) (result i32)
    (if (result i32)
      (i32.eq
        (i32.const 0)
        (local.get $n)
      )
      (then
        (i32.const 1)
      )
      (else
        (if (result i32)
          (i32.eq
            (i32.const 1)
            (local.get $n)
          )
          (then
            (i32.const 1)
          )
          (else
            (i32.add
              ;; fib(n - 1)
              (call $fib
                (i32.add
                  (local.get $n)
                  (i32.const -1)
                )
              )
              ;; fib(n - 2)
              (call $fib
                (i32.add
                  (local.get $n)
                  (i32.const -2)
                )
              )
            )
          )
        )
      )
    )
  )
)

(assert_return (invoke "fib" (i32.const 0)) (i32.const 1))
(assert_return (invoke "fib" (i32.const 1)) (i32.const 1))
(assert_return (invoke "fib" (i32.const 2)) (i32.const 2))
(assert_return (invoke "fib" (i32.const 3)) (i32.const 3))
(assert_return (invoke "fib" (i32.const 4)) (i32.const 5))
(assert_return (invoke "fib" (i32.const 5)) (i32.const 8))
(assert_return (invoke "fib" (i32.const 6)) (i32.const 13))
(assert_return (invoke "fib" (i32.const 7)) (i32.const 21))
(assert_return (invoke "fib" (i32.const 8)) (i32.const 34))
(assert_return (invoke "fib" (i32.const 9)) (i32.const 55))
(assert_return (invoke "fib" (i32.const 10)) (i32.const 89))

;; Generated by Rust.
(module
  (func $fib (export "fib") (param $p0 i32) (result i32)
    (local $l1 i32)
    (local.set $l1
      (i32.const 1))
    (block $B0
      (br_if $B0
        (i32.lt_u
          (local.get $p0)
          (i32.const 2)))
      (local.set $l1
        (i32.const 1))
      (loop $L1
        (local.set $l1
          (i32.add
            (call $fib
              (i32.add
                (local.get $p0)
                (i32.const -1)))
            (local.get $l1)))
        (br_if $L1
          (i32.gt_u
            (local.tee $p0
              (i32.add
                (local.get $p0)
                (i32.const -2)))
            (i32.const 1)))))
    (local.get $l1))
)

(assert_return (invoke "fib" (i32.const 0)) (i32.const 1))
(assert_return (invoke "fib" (i32.const 1)) (i32.const 1))
(assert_return (invoke "fib" (i32.const 2)) (i32.const 2))
(assert_return (invoke "fib" (i32.const 3)) (i32.const 3))
(assert_return (invoke "fib" (i32.const 4)) (i32.const 5))
(assert_return (invoke "fib" (i32.const 5)) (i32.const 8))
(assert_return (invoke "fib" (i32.const 6)) (i32.const 13))
(assert_return (invoke "fib" (i32.const 7)) (i32.const 21))
(assert_return (invoke "fib" (i32.const 8)) (i32.const 34))
(assert_return (invoke "fib" (i32.const 9)) (i32.const 55))
(assert_return (invoke "fib" (i32.const 10)) (i32.const 89))