Updated hw6 to a newer version
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
9224001a22
commit
0c04936ccf
356 changed files with 8408 additions and 4725 deletions
32
hw6/llprograms/sp20_hw3/ackermann.ll
Normal file
32
hw6/llprograms/sp20_hw3/ackermann.ll
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
define i64 @ack(i64 %m, i64 %n) {
|
||||
%r = alloca i64
|
||||
%icm = icmp sgt i64 %m, 0
|
||||
br i1 %icm, label %mnonzero, label %mzero
|
||||
mzero:
|
||||
%tmp = add i64 %n, 1
|
||||
store i64 %tmp, i64* %r
|
||||
br label %end
|
||||
mnonzero:
|
||||
%icn = icmp sgt i64 %n, 0
|
||||
br i1 %icn, label %nnonzero, label %nzero
|
||||
nzero:
|
||||
%msub = sub i64 %m, 1
|
||||
%tmp = call i64 @ack(i64 %msub, i64 1)
|
||||
store i64 %tmp, i64* %r
|
||||
br label %end
|
||||
nnonzero:
|
||||
%msub = sub i64 %m, 1
|
||||
%nsub = sub i64 %n, 1
|
||||
%newn = call i64 @ack(i64 %m, i64 %nsub)
|
||||
%tmp = call i64 @ack(i64 %msub, i64 %newn)
|
||||
store i64 %tmp, i64* %r
|
||||
br label %end
|
||||
end:
|
||||
%rv1 = load i64, i64* %r
|
||||
ret i64 %rv1
|
||||
}
|
||||
|
||||
define i64 @main(i64 %argc, i8** %argv) {
|
||||
%ans = call i64 @ack(i64 2, i64 2)
|
||||
ret i64 %ans
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue