21 lines
539 B
Plaintext
21 lines
539 B
Plaintext
function %fibonacci(i32) -> i32 {
|
|
block0(v0: i32):
|
|
v1 = icmp_imm ule v0, 2
|
|
v2 = iconst.i32 1
|
|
; handle base case, n <= 2
|
|
brif v1, block3(v2), block1(v0, v2)
|
|
|
|
block1(v4: i32, v5:i32):
|
|
v6 = iconst.i32 1
|
|
v7 = iadd_imm v4, -2
|
|
jump block2(v7, v5, v6)
|
|
|
|
block2(v10: i32, v11: i32, v12: i32): ; params: n, fib(n-1), fib(n-2)
|
|
v13 = iadd v11, v12
|
|
v14 = iadd_imm v10, -1
|
|
v15 = icmp_imm eq v14, 0
|
|
brif v15, block3(v13), block2(v14, v13, v11)
|
|
|
|
block3(v20: i32): ; early return and end of loop
|
|
return v20
|
|
} |