Modified hw3 to newer version
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
8437a82fbf
commit
07d34c0cd8
40 changed files with 856 additions and 271 deletions
15
hw3/llprograms/c_weighted_sum.c
Normal file
15
hw3/llprograms/c_weighted_sum.c
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <inttypes.h>
|
||||
|
||||
int64_t ll_weighted_sum(int64_t a1, int64_t a2, int64_t a3, int64_t a4,
|
||||
int64_t a5, int64_t a6, int64_t a7, int64_t a8) {
|
||||
int64_t sum = 0;
|
||||
sum += a1 * 1;
|
||||
sum += a2 * 2;
|
||||
sum += a3 * 3;
|
||||
sum += a4 * 4;
|
||||
sum += a5 * 5;
|
||||
sum += a6 * 6;
|
||||
sum += a7 * 7;
|
||||
sum += a8 * 8;
|
||||
return sum;
|
||||
}
|
||||
37
hw3/llprograms/example.ll
Normal file
37
hw3/llprograms/example.ll
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
declare i8* @ll_ltoa(i64)
|
||||
declare void @ll_puts(i8*)
|
||||
|
||||
%arr = type [10 x i64]
|
||||
|
||||
@nums = global %arr [ i64 5, i64 1, i64 4, i64 2, i64 3, i64 6, i64 10, i64 9, i64 7, i64 8 ]
|
||||
|
||||
define void @iter(void(i64)* %f, %arr* %l) {
|
||||
%1 = alloca i64
|
||||
store i64 0, i64* %1
|
||||
br label %loop
|
||||
loop:
|
||||
%i = load i64, i64* %1
|
||||
%valid = icmp slt i64 %i, 10
|
||||
br i1 %valid, label %body, label %post
|
||||
body:
|
||||
%idx = load i64, i64* %1
|
||||
%p = getelementptr %arr, %arr* %l, i64 0, i64 %idx
|
||||
%n = load i64, i64* %p
|
||||
call void %f(i64 %n)
|
||||
%newidx = add i64 %idx, 1
|
||||
store i64 %newidx, i64* %1
|
||||
br label %loop
|
||||
post:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print(i64 %x) {
|
||||
%1 = call i8* @ll_ltoa(i64 %x)
|
||||
call void @ll_puts(i8* %1)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @main(i64 %argc, i8** %arcv) {
|
||||
call void @iter(void(i64)* @print, %arr* @nums)
|
||||
ret void
|
||||
}
|
||||
14
hw3/llprograms/funptr.ll
Normal file
14
hw3/llprograms/funptr.ll
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
define i64 @m(i64 %x) {
|
||||
%ans = add i64 %x, 1
|
||||
ret i64 %ans
|
||||
}
|
||||
|
||||
define i64 @apply(i64(i64)* %f) {
|
||||
%ans = call i64 %f(i64 34)
|
||||
ret i64 %ans
|
||||
}
|
||||
|
||||
define i64 @main(i64 %argc, i8** %argv) {
|
||||
%ans = call i64 @apply(i64(i64)* @m)
|
||||
ret %ans
|
||||
}
|
||||
9
hw3/llprograms/printf1.ll
Normal file
9
hw3/llprograms/printf1.ll
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
declare void @printf(i8*)
|
||||
|
||||
@format = global [15 x i8] c"test alignment\00"
|
||||
|
||||
define i64 @main(i64 %argc, i8** %argv) {
|
||||
%1 = getelementptr [15 x i8], [15 x i8]* @format, i32 0, i32 0
|
||||
call void @printf(i8* %1)
|
||||
ret i64 0
|
||||
}
|
||||
10
hw3/llprograms/printf2.ll
Normal file
10
hw3/llprograms/printf2.ll
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
declare void @printf(i8*)
|
||||
|
||||
@format = global [15 x i8] c"test alignment\00"
|
||||
|
||||
define i64 @main(i64 %argc, i8** %argv) {
|
||||
%1 = getelementptr [15 x i8], [15 x i8]* @format, i32 0, i32 0
|
||||
%2 = add i64 0, 0
|
||||
call void @printf(i8* %1)
|
||||
ret i64 %2
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue