diff options
author | Camil Staps | 2021-01-08 11:37:49 +0100 |
---|---|---|
committer | Camil Staps | 2021-01-08 11:37:49 +0100 |
commit | 2f35a66e33bdd4ef608199c0e02864395f0f916b (patch) | |
tree | 89067ab3410d9166a199c5263c62cdbd8356aa43 | |
parent | Use malloc to allocate heap and stack (diff) |
Move hp and stack pointers to beginning of function parameters in fib_* and nfib (for easier calling convention)
-rw-r--r-- | fib_eqI_b.ll | 64 | ||||
-rw-r--r-- | fib_ltI.ll | 12 | ||||
-rw-r--r-- | nfib.ll | 12 | ||||
-rw-r--r-- | rts.ll | 6 |
4 files changed, 47 insertions, 47 deletions
diff --git a/fib_eqI_b.ll b/fib_eqI_b.ll index 12a3c95..72e08e1 100644 --- a/fib_eqI_b.ll +++ b/fib_eqI_b.ll @@ -1,4 +1,4 @@ -define {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n, i64** %globasp, i64* %hp.0) align 8 +define {i64*,i64*} @e_fib_eqI_b_nfib(i64* %hp.0, i64** %globasp, i64* %n) align 8 prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 1} { %astack = alloca i64*, i64 10 %asp.000 = getelementptr i64*, i64** %astack @@ -14,9 +14,9 @@ define {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n, i64** %globasp, i64* %hp.0) align %t.1 = call i64* @peek_a(i64** %asp.002) %asp.003 = call i64** @pop_a1(i64** %asp.002) %globasp.0 = call i64** @_push_local_astack(i64** %asp.003, i64** %asp.000, i64** %globasp) - %t.2 = call {i64,i64*} @ea1(i64* %t.1, i64** %globasp.0, i64* %hp.0) - %t.2.0 = extractvalue {i64,i64*} %t.2, 0 - %hp.1 = extractvalue {i64,i64*} %t.2, 1 + %t.2 = call {i64*,i64} @ea1(i64* %hp.0, i64** %globasp.0, i64* %t.1) + %hp.1 = extractvalue {i64*,i64} %t.2, 0 + %t.2.0 = extractvalue {i64*,i64} %t.2, 1 %bsp.001 = call i64* @pushI(i64 %t.2.0, i64* %bsp.000) %asp.004 = call i64** @fillI_b(i64 0, i64 -0, i64* %bsp.001, i64** %asp.003) @@ -25,12 +25,12 @@ define {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n, i64** %globasp, i64* %hp.0) align %t.3 = call i64* @peek_a(i64** %asp.004) %asp.005 = call i64** @pop_a1(i64** %asp.004) - %ret.0 = insertvalue {i64*,i64*} undef, i64* %t.3, 0 - %ret.1 = insertvalue {i64*,i64*} %ret.0, i64* %hp.1, 1 + %ret.0 = insertvalue {i64*,i64*} undef, i64* %hp.1, 0 + %ret.1 = insertvalue {i64*,i64*} %ret.0, i64* %t.3, 1 ret {i64*,i64*} %ret.1 } -define private {i64,i64*} @ea1(i64* %n, i64** %globasp, i64* %hp.0) { +define private {i64*,i64} @ea1(i64* %hp.0, i64** %globasp, i64* %n) { %astack = alloca i64*, i64 10 %asp.000 = getelementptr i64*, i64** %astack, i64 0 %bstack = alloca i64, i64 10 @@ -45,16 +45,16 @@ define private {i64,i64*} @ea1(i64* %n, i64** %globasp, i64* %hp.0) { %t.0 = call i64 @peek_b(i64* %bsp.001) %bsp.002 = call i64* @pop_b1(i64* %bsp.001) - %t.1 = tail call {i64,i64*} @s1(i64 %t.0, i64** %globasp, i64* %hp.1) - %t.2 = extractvalue {i64,i64*} %t.1, 0 - %hp.2 = extractvalue {i64,i64*} %t.1, 1 + %t.1 = tail call {i64*,i64} @s1(i64* %hp.1, i64** %globasp, i64 %t.0) + %hp.2 = extractvalue {i64*,i64} %t.1, 0 + %t.2 = extractvalue {i64*,i64} %t.1, 1 - %ret.0 = insertvalue {i64,i64*} undef, i64 %t.2, 0 - %ret.1 = insertvalue {i64,i64*} %ret.0, i64* %hp.2, 1 - ret {i64,i64*} %ret.1 + %ret.0 = insertvalue {i64*,i64} undef, i64* %hp.2, 0 + %ret.1 = insertvalue {i64*,i64} %ret.0, i64 %t.2, 1 + ret {i64*,i64} %ret.1 } -define private {i64,i64*} @s1(i64 %arg, i64** %globasp, i64* %hp.0) #0 { +define private {i64*,i64} @s1(i64* %hp.0, i64** %globasp, i64 %arg) #0 { %astack = alloca i64*, i64 10000 %asp.000 = getelementptr i64*, i64** %astack %bstack = alloca i64, i64 10000 @@ -82,9 +82,9 @@ case.1: %r.1 = call i64 @peek_b(i64* %bsp.101) %bsp.102 = call i64* @pop_b1(i64* %bsp.101) - %ret.0 = insertvalue {i64,i64*} undef, i64 %r.1, 0 - %ret.1 = insertvalue {i64,i64*} %ret.0, i64* %hp.0, 1 - ret {i64,i64*} %ret.1 + %ret.0 = insertvalue {i64*,i64} undef, i64* %hp.0, 0 + %ret.1 = insertvalue {i64*,i64} %ret.0, i64 %r.1, 1 + ret {i64*,i64} %ret.1 case.2: %bsp.200 = call i64* @pop_b1(i64* %bsp.005) @@ -93,9 +93,9 @@ case.2: %r.2 = call i64 @peek_b(i64* %bsp.201) %bsp.202 = call i64* @pop_b1(i64* %bsp.201) - %ret.2 = insertvalue {i64,i64*} undef, i64 %r.2, 0 - %ret.3 = insertvalue {i64,i64*} %ret.2, i64* %hp.0, 1 - ret {i64,i64*} %ret.3 + %ret.2 = insertvalue {i64*,i64} undef, i64* %hp.0, 0 + %ret.3 = insertvalue {i64*,i64} %ret.2, i64 %r.2, 1 + ret {i64*,i64} %ret.3 case.3: %bsp.300 = call i64* @pushI(i64 1, i64* %bsp.005) @@ -104,9 +104,9 @@ case.3: %arg.0 = call i64 @peek_b(i64* %bsp.302) %bsp.302.0 = call i64* @pop_b1(i64* %bsp.302) - %t.4 = call {i64,i64*} @s1(i64 %arg.0, i64** %globasp, i64* %hp.0) - %t.5 = extractvalue {i64,i64*} %t.4, 0 - %hp.1 = extractvalue {i64,i64*} %t.4, 1 + %t.4 = call {i64*,i64} @s1(i64* %hp.0, i64** %globasp, i64 %arg.0) + %hp.1 = extractvalue {i64*,i64} %t.4, 0 + %t.5 = extractvalue {i64*,i64} %t.4, 1 %bsp.303 = call i64* @pushI(i64 %t.5, i64* %bsp.302.0) %bsp.304 = call i64* @pushI(i64 2, i64* %bsp.303) @@ -115,9 +115,9 @@ case.3: %arg.1 = call i64 @peek_b(i64* %bsp.306) %bsp.306.0 = call i64* @pop_b1(i64* %bsp.306) - %t.6 = call {i64,i64*} @s1(i64 %arg.1, i64** %globasp, i64* %hp.1) - %t.7 = extractvalue {i64,i64*} %t.6, 0 - %hp.2 = extractvalue {i64,i64*} %t.6, 1 + %t.6 = call {i64*,i64} @s1(i64* %hp.1, i64** %globasp, i64 %arg.1) + %hp.2 = extractvalue {i64*,i64} %t.6, 0 + %t.7 = extractvalue {i64*,i64} %t.6, 1 %bsp.307 = call i64* @pushI(i64 %t.7, i64* %bsp.306.0) %bsp.308 = call i64* @update_b(i64 1, i64 2, i64* %bsp.307) @@ -127,9 +127,9 @@ case.3: %r.3 = call i64 @peek_b(i64* %bsp.310) %bsp.311 = call i64* @pop_b1(i64* %bsp.310) - %ret.4 = insertvalue {i64,i64*} undef, i64 %r.3, 0 - %ret.5 = insertvalue {i64,i64*} %ret.4, i64* %hp.2, 1 - ret {i64,i64*} %ret.5 + %ret.4 = insertvalue {i64*,i64} undef, i64* %hp.2, 0 + %ret.5 = insertvalue {i64*,i64} %ret.4, i64 %r.3, 1 + ret {i64*,i64} %ret.5 } define i64 @main() { @@ -151,9 +151,9 @@ define i64 @main() { store i64 %t.0, i64* %n.1.0 %hp.2 = getelementptr i64, i64* %hp.0, i64 3 - %t.1 = call {i64*,i64*} @e_fib_eqI_b_nfib(i64* %n.1, i64** %astack, i64* %hp.2) - %n.2 = extractvalue {i64*,i64*} %t.1, 0 - %hp.3 = extractvalue {i64*,i64*} %t.1, 1 + %t.1 = call {i64*,i64*} @e_fib_eqI_b_nfib(i64* %hp.2, i64** %astack, i64* %n.1) + %hp.3 = extractvalue {i64*,i64*} %t.1, 0 + %n.2 = extractvalue {i64*,i64*} %t.1, 1 %n.3 = getelementptr i64, i64* %n.2, i64 1 %r = load i64, i64* %n.3 @@ -1,4 +1,4 @@ -define private i64 @s1(i64 %arg, i64** %globasp) { +define private i64 @s1(i64** %globasp, i64 %arg) { %astack = alloca i64*, i64 10000 %asp.000 = getelementptr i64*, i64** %astack %bstack = alloca i64, i64 10000 @@ -30,7 +30,7 @@ else.1: %arg.0 = call i64 @peek_b(i64* %bsp.302) %bsp.302.0 = call i64* @pop_b1(i64* %bsp.302) - %r.0 = call i64 @s1(i64 %arg.0, i64** %globasp) + %r.0 = call i64 @s1(i64** %globasp, i64 %arg.0) %bsp.303 = call i64* @pushI(i64 %r.0, i64* %bsp.302.0) %bsp.304 = call i64* @pushI(i64 2, i64* %bsp.303) @@ -39,7 +39,7 @@ else.1: %arg.1 = call i64 @peek_b(i64* %bsp.306) %bsp.306.0 = call i64* @pop_b1(i64* %bsp.306) - %r.1 = call i64 @s1(i64 %arg.1, i64** %globasp) + %r.1 = call i64 @s1(i64** %globasp, i64 %arg.1) %bsp.307 = call i64* @pushI(i64 %r.1, i64* %bsp.306.0) %bsp.308 = call i64* @update_b(i64 1, i64 2, i64* %bsp.307) @@ -51,8 +51,8 @@ else.1: ret i64 %relse } -define private i64 @_s2(i64 %arg, i64** %globasp) { - %ret = tail call i64 @s1(i64 %arg, i64** %globasp) +define private i64 @_s2(i64** %globasp, i64 %arg) { + %ret = tail call i64 @s1(i64** %globasp, i64 %arg) ret i64 %ret } @@ -60,7 +60,7 @@ define i64 @main() { %heap = call i64* @_alloc_heap(i64 10000) %astack = call i64** @_alloc_a_stack(i64 10000) - %r = call i64 @_s2(i64 43, i64** %astack) + %r = call i64 @_s2(i64** %astack, i64 43) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %r) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_c, i64 0, i64 0), i64 10) @@ -1,4 +1,4 @@ -define private i64 @s1(i64 %arg, i64** %globasp) #0 { +define private i64 @s1(i64** %globasp, i64 %arg) #0 { %astack = alloca i64*, i64 10000 %asp.000 = getelementptr i64*, i64** %astack %bstack = alloca i64, i64 10000 @@ -30,7 +30,7 @@ else.1: %arg.0 = call i64 @peek_b(i64* %bsp.302) %bsp.302.0 = call i64* @pop_b1(i64* %bsp.302) - %r.0 = call i64 @s1(i64 %arg.0, i64** %globasp) + %r.0 = call i64 @s1(i64** %globasp, i64 %arg.0) %bsp.303 = call i64* @pushI(i64 %r.0, i64* %bsp.302.0) %bsp.304 = call i64* @pushI(i64 1, i64* %bsp.303) @@ -39,7 +39,7 @@ else.1: %arg.1 = call i64 @peek_b(i64* %bsp.306) %bsp.306.0 = call i64* @pop_b1(i64* %bsp.306) - %r.1 = call i64 @s1(i64 %arg.1, i64** %globasp) + %r.1 = call i64 @s1(i64** %globasp, i64 %arg.1) %bsp.307 = call i64* @pushI(i64 %r.1, i64* %bsp.306.0) %bsp.308 = call i64* @addI(i64* %bsp.307) @@ -57,8 +57,8 @@ else.1: ret i64 %relse } -define private i64 @_s2(i64 %arg, i64** %globasp) { - %ret = tail call i64 @s1(i64 %arg, i64** %globasp) +define private i64 @s2(i64** %globasp, i64 %arg) { + %ret = tail call i64 @s1(i64** %globasp, i64 %arg) ret i64 %ret } @@ -66,7 +66,7 @@ define i64 @main() { %heap = call i64* @_alloc_heap(i64 1000) %astack = call i64** @_alloc_a_stack(i64 1000) - %r = call i64 @_s2(i64 43, i64** %astack) + %r = call i64 @s2(i64** %astack, i64 43) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_d, i64 0, i64 0), i64 %r) call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @printf_c, i64 0, i64 0), i64 10) @@ -157,9 +157,9 @@ done: eval: %globasp.1 = call i64** @_push_local_astack(i64** %asp.0, i64** %aspstart, i64** %globasp.0) %nentry.0 = inttoptr i64 %d.0 to {i64*, i64*} (i64*, i64**, i64*)* - %t.2 = call {i64*, i64*} %nentry.0(i64* %n.0, i64** %globasp.1, i64* %hp.0) - %n.1 = extractvalue {i64*, i64*} %t.2, 0 - %hp.1 = extractvalue {i64*, i64*} %t.2, 1 + %t.2 = call {i64*, i64*} %nentry.0(i64* %hp.0, i64** %globasp.1, i64* %n.0) + %hp.1 = extractvalue {i64*, i64*} %t.2, 0 + %n.1 = extractvalue {i64*, i64*} %t.2, 1 store i64* %n.1, i64** %asp.1 ret i64* %hp.1 } |