CS153/hw6/llprograms/sp20_hw3/ncr.ll
jmug 0c04936ccf Updated hw6 to a newer version
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:23:08 -08:00

33 lines
694 B
LLVM

define i64 @main(i64 %argc, i8** %arcv) {
%1 = call i64 @fac(i64 9)
%2 = call i64 @fac(i64 3)
%3 = sub i64 9, 3
%4 = call i64 @fac(i64 %3)
%5 = mul i64 %2, %4
%6 = call i64 @div(i64 %1, i64 %5)
ret i64 %6
}
define i64 @div(i64 %num, i64 %div) {
%1 = icmp slt i64 %num, %div
br i1 %1, label %rett, label %recc
rett:
ret i64 0
recc:
%2 = sub i64 %num, %div
%3 = call i64 @div(i64 %2, i64 %div)
%4 = add i64 %3, 1
ret i64 %4
}
define i64 @fac(i64 %n) {
%1 = icmp sle i64 %n, 0
br i1 %1, label %rett, label %rec
rett:
ret i64 1
rec:
%2 = sub i64 %n, 1
%3 = call i64 @fac(i64 %2)
%4 = mul i64 %n, %3
ret i64 %4
}