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
175
hw6/llprograms/sp22_hw3/heap.ll
Normal file
175
hw6/llprograms/sp22_hw3/heap.ll
Normal file
|
|
@ -0,0 +1,175 @@
|
|||
%Node = type { %Node*, %Node*, i64 }
|
||||
|
||||
@n6 = global %Node { %Node* null, %Node* null, i64 67 }
|
||||
@n5 = global %Node { %Node* null, %Node* null, i64 -42 }
|
||||
@n4 = global %Node { %Node* null, %Node* null, i64 12 }
|
||||
@n3 = global %Node { %Node* null, %Node* null, i64 1 }
|
||||
@n2 = global %Node { %Node* @n5, %Node* @n6, i64 -5 }
|
||||
@n1 = global %Node { %Node* @n3, %Node* @n4, i64 -9 }
|
||||
@root = global %Node { %Node* @n1, %Node* @n2, i64 15 }
|
||||
|
||||
define void @swap(%Node* %n1, %Node* %n2) {
|
||||
%n1l.p = getelementptr %Node, %Node* %n1, i32 0, i32 0
|
||||
%temp_l = load %Node*, %Node** %n1l.p
|
||||
%n1r.p = getelementptr %Node, %Node* %n1, i32 0, i32 1
|
||||
%temp_r = load %Node*, %Node** %n1r.p
|
||||
%n1v.p = getelementptr %Node, %Node* %n1, i32 0, i32 2
|
||||
%temp_v = load i64, i64* %n1v.p
|
||||
%n2l.p = getelementptr %Node, %Node* %n2, i32 0, i32 0
|
||||
%t2_l = load %Node*, %Node** %n2l.p
|
||||
store %Node* %t2_l, %Node** %n1l.p
|
||||
%n2r.p = getelementptr %Node, %Node* %n2, i32 0, i32 1
|
||||
%t2_r = load %Node*, %Node** %n2r.p
|
||||
store %Node* %t2_r, %Node** %n1r.p
|
||||
%n2v.p = getelementptr %Node, %Node* %n2, i32 0, i32 2
|
||||
%t2_v = load i64, i64* %n2v.p
|
||||
store i64 %t2_v, i64* %n1v.p
|
||||
store %Node* %temp_l, %Node** %n2l.p
|
||||
store %Node* %temp_r, %Node** %n2r.p
|
||||
store i64 %temp_v, i64* %n2v.p
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @heapify(%Node* %0) {
|
||||
%2 = alloca %Node*
|
||||
%3 = alloca %Node*
|
||||
%4 = alloca %Node*
|
||||
%5 = alloca %Node*
|
||||
store %Node* %0, %Node** %2
|
||||
%6 = load %Node*, %Node** %2
|
||||
%7 = getelementptr %Node, %Node* %6, i32 0, i32 0
|
||||
%8 = load %Node*, %Node** %7
|
||||
store %Node* %8, %Node** %3
|
||||
%9 = load %Node*, %Node** %2
|
||||
%10 = getelementptr %Node, %Node* %9, i32 0, i32 1
|
||||
%11 = load %Node*, %Node** %10
|
||||
store %Node* %11, %Node** %4
|
||||
%12 = load %Node*, %Node** %2
|
||||
store %Node* %12, %Node** %5
|
||||
%13 = load %Node*, %Node** %3
|
||||
%14 = icmp ne %Node* %13, null
|
||||
br i1 %14, label %l15, label %l25
|
||||
l15:
|
||||
%16 = load %Node*, %Node** %3
|
||||
%17 = getelementptr %Node, %Node* %16, i32 0, i32 2
|
||||
%18 = load i64, i64* %17
|
||||
%19 = load %Node*, %Node** %2
|
||||
%20 = getelementptr %Node, %Node* %19, i32 0, i32 2
|
||||
%21 = load i64, i64* %20
|
||||
%22 = icmp sgt i64 %18, %21
|
||||
br i1 %22, label %l23, label %l25
|
||||
l23:
|
||||
%24 = load %Node*, %Node** %3
|
||||
store %Node* %24, %Node** %5
|
||||
br label %l25
|
||||
l25:
|
||||
%26 = load %Node*, %Node** %4
|
||||
%27 = icmp ne %Node* %26, null
|
||||
br i1 %27, label %l28, label %l38
|
||||
l28:
|
||||
%29 = load %Node*, %Node** %4
|
||||
%30 = getelementptr %Node, %Node* %29, i32 0, i32 2
|
||||
%31 = load i64, i64* %30
|
||||
%32 = load %Node*, %Node** %2
|
||||
%33 = getelementptr %Node, %Node* %32, i32 0, i32 2
|
||||
%34 = load i64, i64* %33
|
||||
%35 = icmp sgt i64 %31, %34
|
||||
br i1 %35, label %l36, label %l38
|
||||
l36:
|
||||
%37 = load %Node*, %Node** %4
|
||||
store %Node* %37, %Node** %5
|
||||
br label %l38
|
||||
l38:
|
||||
%39 = load %Node*, %Node** %5
|
||||
%40 = load %Node*, %Node** %2
|
||||
%41 = icmp ne %Node* %39, %40
|
||||
br i1 %41, label %l42, label %l46
|
||||
l42:
|
||||
%43 = load %Node*, %Node** %2
|
||||
%44 = load %Node*, %Node** %5
|
||||
call void @swap(%Node* %43, %Node* %44)
|
||||
%45 = load %Node*, %Node** %2
|
||||
call void @heapify(%Node* %45)
|
||||
br label %l46
|
||||
l46:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @heapify_total(%Node* %0) {
|
||||
%2 = alloca %Node*
|
||||
store %Node* %0, %Node** %2
|
||||
%3 = load %Node*, %Node** %2
|
||||
%4 = getelementptr %Node, %Node* %3, i32 0, i32 0
|
||||
%5 = load %Node*, %Node** %4
|
||||
%6 = icmp eq %Node* %5, null
|
||||
br i1 %6, label %l7, label %l13
|
||||
l7:
|
||||
%8 = load %Node*, %Node** %2
|
||||
%9 = getelementptr %Node, %Node* %8, i32 0, i32 1
|
||||
%10 = load %Node*, %Node** %9
|
||||
%11 = icmp eq %Node* %10, null
|
||||
br i1 %11, label %l12, label %l13
|
||||
l12:
|
||||
br label %l51
|
||||
l13:
|
||||
%14 = load %Node*, %Node** %2
|
||||
%15 = getelementptr %Node, %Node* %14, i32 0, i32 0
|
||||
%16 = load %Node*, %Node** %15
|
||||
%17 = icmp ne %Node* %16, null
|
||||
br i1 %17, label %l18, label %l31
|
||||
l18:
|
||||
%19 = load %Node*, %Node** %2
|
||||
%20 = getelementptr %Node, %Node* %19, i32 0, i32 1
|
||||
%21 = load %Node*, %Node** %20
|
||||
%22 = icmp ne %Node* %21, null
|
||||
br i1 %22, label %l23, label %l31
|
||||
l23:
|
||||
%24 = load %Node*, %Node** %2
|
||||
%25 = getelementptr %Node, %Node* %24, i32 0, i32 0
|
||||
%26 = load %Node*, %Node** %25
|
||||
call void @heapify_total(%Node* %26)
|
||||
%27 = load %Node*, %Node** %2
|
||||
%28 = getelementptr %Node, %Node* %27, i32 0, i32 1
|
||||
%29 = load %Node*, %Node** %28
|
||||
call void @heapify_total(%Node* %29)
|
||||
%30 = load %Node*, %Node** %2
|
||||
call void @heapify(%Node* %30)
|
||||
br label %l51
|
||||
l31:
|
||||
%32 = load %Node*, %Node** %2
|
||||
%33 = getelementptr %Node, %Node* %32, i32 0, i32 0
|
||||
%34 = load %Node*, %Node** %33
|
||||
%35 = icmp eq %Node* %34, null
|
||||
br i1 %35, label %l36, label %l41
|
||||
l36:
|
||||
%37 = load %Node*, %Node** %2
|
||||
%38 = getelementptr %Node, %Node* %37, i32 0, i32 1
|
||||
%39 = load %Node*, %Node** %38
|
||||
call void @heapify_total(%Node* %39)
|
||||
%40 = load %Node*, %Node** %2
|
||||
call void @heapify(%Node* %40)
|
||||
br label %l51
|
||||
l41:
|
||||
%42 = load %Node*, %Node** %2
|
||||
%43 = getelementptr %Node, %Node* %42, i32 0, i32 1
|
||||
%44 = load %Node*, %Node** %43
|
||||
%45 = icmp eq %Node* %44, null
|
||||
br i1 %45, label %l46, label %l51
|
||||
l46:
|
||||
%47 = load %Node*, %Node** %2
|
||||
%48 = getelementptr %Node, %Node* %47, i32 0, i32 0
|
||||
%49 = load %Node*, %Node** %48
|
||||
call void @heapify_total(%Node* %49)
|
||||
%50 = load %Node*, %Node** %2
|
||||
call void @heapify(%Node* %50)
|
||||
br label %l51
|
||||
l51:
|
||||
ret void
|
||||
}
|
||||
|
||||
define i64 @main() {
|
||||
call void @heapify_total(%Node* @root)
|
||||
%max_val_ptr = getelementptr %Node, %Node* @root, i32 0, i32 2
|
||||
%max_val = load i64, i64* %max_val_ptr
|
||||
ret i64 %max_val
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue