CS153/hw6/llprograms/sp20_hw3/our_test.ll
jmug 0c04936ccf Updated hw6 to a newer version
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:23:08 -08:00

26 lines
No EOL
803 B
LLVM

%arr = type [2 x i64]
%var1 = type { i64, %arr* }
%var2 = type { i64, %arr*, %var1* }
@tmp = global %arr [ i64 0, i64 0 ]
@v1 = global %var1 {i64 2, %arr* @tmp}
@v2 = global %var2 {i64 1, %arr* null, %var1* @v1}
define i64 @main(i64 %argc, i8** %arcv) {
%a = getelementptr %arr, %arr* @tmp, i32 0, i32 0
%b = getelementptr %arr, %arr* @tmp, i32 0, i32 1
store i64 10, i64* %a
store i64 11, i64* %b
%1 = getelementptr %var2, %var2* @v2, i32 0, i32 2
%2 = load %var1*, %var1** %1
%3 = getelementptr %var1, %var1* %2, i32 0, i32 1
%4 = load %arr*, %arr** %3
%5 = getelementptr %arr, %arr* %4, i32 0, i32 0
store i64 11, i64* %5
%6 = getelementptr %arr, %arr* %4, i32 0, i32 1
store i64 10, i64* %5
%9 = load i64, i64* %a
%10 = load i64, i64* %b
%result = sub i64 %9, %10
ret i64 %result
}