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
26
hw6/llprograms/sp22_hw3/foldl.ll
Normal file
26
hw6/llprograms/sp22_hw3/foldl.ll
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
@gbl = global [5 x i64] [ i64 2, i64 3, i64 4, i64 5, i64 6 ]
|
||||
|
||||
define i64 @add(i64 %x1, i64 %x2) {
|
||||
%1 = add i64 %x1, %x2
|
||||
ret i64 %1
|
||||
}
|
||||
|
||||
define i64 @foldl(i64(i64, i64)* %f, i64 %acc, i64* %argv, i64 %argc) {
|
||||
%cmp = icmp eq i64 %argc, 0
|
||||
br i1 %cmp, label %then, label %else
|
||||
then:
|
||||
ret i64 %acc
|
||||
else:
|
||||
%tail = getelementptr i64, i64* %argv, i32 1
|
||||
%head = load i64, i64* %argv
|
||||
%new_acc = call i64 %f(i64 %acc, i64 %head)
|
||||
%new_argc = sub i64 %argc, 1
|
||||
%val = call i64 @foldl(i64(i64, i64)* %f, i64 %new_acc, i64* %tail, i64 %new_argc)
|
||||
ret i64 %val
|
||||
}
|
||||
|
||||
define i64 @main(i64 %argc, i8** %arcv) {
|
||||
%1 = getelementptr [5 x i64], [5 x i64]* @gbl, i32 0, i32 0
|
||||
%2 = call i64 @foldl(i64(i64, i64)* @add, i64 0, i64* %1, i64 5)
|
||||
ret i64 %2
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue