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
38
hw6/llprograms/sp22_hw3/index_match.ll
Normal file
38
hw6/llprograms/sp22_hw3/index_match.ll
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
@glist = global [7 x i64] [ i64 -1, i64 1, i64 4, i64 5, i64 6, i64 10, i64 11 ]
|
||||
|
||||
define i64 @indexmatch(i64 %lo, i64 %hi, [7 x i64]* %list) {
|
||||
%cmp1 = icmp eq i64 %lo, %hi
|
||||
br i1 %cmp1, label %base_case, label %check
|
||||
base_case:
|
||||
%a_lo_addr = getelementptr [7 x i64], [7 x i64]* %list, i32 0, i64 %lo
|
||||
%a_lo = load i64, i64* %a_lo_addr
|
||||
%cmp2 = icmp eq i64 %lo, %a_lo
|
||||
br i1 %cmp2, label %true, label %false
|
||||
true:
|
||||
ret i64 1
|
||||
false:
|
||||
ret i64 0
|
||||
check:
|
||||
%m2 = add i64 %lo, %hi
|
||||
%m = ashr i64 %m2, 1
|
||||
%a_m_addr = getelementptr [7 x i64], [7 x i64]* %list, i32 0, i64 %m
|
||||
%a_m = load i64, i64* %a_m_addr
|
||||
%cmp3 = icmp eq i64 %m, %a_m
|
||||
br i1 %cmp3, label %true, label %recurse
|
||||
recurse:
|
||||
%cmp4 = icmp slt i64 %m, %a_m
|
||||
br i1 %cmp4, label %recurse_left, label %recurse_right
|
||||
recurse_left:
|
||||
%new_hi = sub i64 %m, 1
|
||||
%left_ans = call i64 @indexmatch(i64 %lo, i64 %new_hi, [7 x i64]* %list)
|
||||
ret i64 %left_ans
|
||||
recurse_right:
|
||||
%new_lo = add i64 %m, 1
|
||||
%right_ans = call i64 @indexmatch(i64 %new_lo, i64 %hi, [7 x i64]* %list)
|
||||
ret i64 %right_ans
|
||||
}
|
||||
|
||||
define i64 @main(i64 %argc, i8** %arcv) {
|
||||
%ans = call i64 @indexmatch(i64 0, i64 6, [7 x i64]* @glist)
|
||||
ret i64 %ans
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue