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
41
hw6/llprograms/sp20_hw3/find_max.ll
Normal file
41
hw6/llprograms/sp20_hw3/find_max.ll
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
%arr = type [8 x i64]
|
||||
|
||||
@input = global %arr [i64 50, i64 60, i64 40, i64 70, i64 30, i64 80, i64 20, i64 80]
|
||||
@length = global i64 8
|
||||
|
||||
define i64 @find_max (){
|
||||
%max = alloca i64
|
||||
%ctr_addr = alloca i64
|
||||
store i64 0, i64* %ctr_addr ; initialize counter to 0
|
||||
%1 = getelementptr %arr, %arr* @input, i32 0, i64 0
|
||||
%l = load i64, i64* %1
|
||||
store i64 %l, i64* %max ; %max <- first element in array
|
||||
br label %loop
|
||||
|
||||
loop:
|
||||
%ctr = load i64, i64* %ctr_addr ; retrieve counter value
|
||||
%addr_of_current = getelementptr [8 x i64], [8 x i64]* @input, i32 0, i64 %ctr
|
||||
%current = load i64, i64* %addr_of_current ; retrieve current value
|
||||
%t = load i64, i64* %max
|
||||
%flag = icmp slt i64 %t, %current
|
||||
br i1 %flag, label %update_max, label %move_on
|
||||
|
||||
update_max:
|
||||
store i64 %current, i64* %max
|
||||
br label %move_on
|
||||
|
||||
move_on:
|
||||
%g = load i64, i64* %ctr_addr
|
||||
%2 = add i64 1, %g
|
||||
store i64 %2, i64* %ctr_addr
|
||||
%flag2 = icmp eq i64 %2, 8
|
||||
br i1 %flag2, label %end, label %loop
|
||||
|
||||
end:
|
||||
ret i64 %t
|
||||
}
|
||||
|
||||
define i64 @main(i64 %argc, i8** %argv) {
|
||||
%1 = call i64 @find_max()
|
||||
ret i64 %1
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue