CS153/hw6/llprograms/sp24_hw3/sum_array.ll
jmug ee01a8f5b2 Change hw6 to an unsolved version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 23:10:01 -08:00

31 lines
No EOL
743 B
LLVM

%array = type [10 x i64]
@nums = global %array [i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, i64 8, i64 9, i64 10]
define i64 @sum() {
%ipt = alloca i64
store i64 0, i64* %ipt
%sumpt = alloca i64
store i64 0, i64* %sumpt
br label %loop
loop:
%i = load i64, i64* %ipt
%s = load i64, i64* %sumpt
%elempt = getelementptr %array, %array* @nums, i32 0, i64 %i
%elem = load i64, i64* %elempt
%s2 = add i64 %s, %elem
%i2 = add i64 %i, 1
store i64 %s2, i64* %sumpt
store i64 %i2, i64* %ipt
%test = icmp slt i64 %i2, 10
br i1 %test, label %loop, label %end
end:
ret i64 %s2
}
define i64 @main(i64 %argc, i8** %argv) {
%ans = call i64 @sum()
ret i64 %ans
}