diff options
author | Camil Staps | 2021-01-08 11:38:28 +0100 |
---|---|---|
committer | Camil Staps | 2021-01-08 11:38:28 +0100 |
commit | 0b1fbe06a712b8454ced47418ea93eac6ce5dfaa (patch) | |
tree | caeaafed3c0e84bd1527d44f67030cffc11e2f8d /nfib_nsa.ll | |
parent | Move hp and stack pointers to beginning of function parameters in fib_* and n... (diff) |
Add annotations in nfib_nsa
Diffstat (limited to 'nfib_nsa.ll')
-rw-r--r-- | nfib_nsa.ll | 146 |
1 files changed, 87 insertions, 59 deletions
diff --git a/nfib_nsa.ll b/nfib_nsa.ll index f7843a7..b49ceae 100644 --- a/nfib_nsa.ll +++ b/nfib_nsa.ll @@ -1,9 +1,13 @@ -define {i64*,i64*} @n5(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 +define {i64*,i64*} @n5( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0, + i64* inreg align 8 nocapture nofree dereferenceable(3) %n) + nofree willreturn nosync nounwind argmemonly align 8 prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 0} { - %astack = alloca i64*, i64 10 + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %asp.001 = getelementptr i64*, i64** %asp.000, i64 1 store i64* %n, i64** %asp.001 @@ -11,9 +15,9 @@ define {i64*,i64*} @n5(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 %t.0 = bitcast {i64*,i64*}(i64**,i64*)* @_cycle_in_spine to i64* %asp.002 = call i64** @push_node(i64* %t.0, i64 0, i64** %asp.001) - %t.1 = call {i64,i64*} @ea5(i64** %globasp.0, i64* %hp.0) - %t.2 = extractvalue {i64,i64*} %t.1, 0 - %hp.1 = extractvalue {i64,i64*} %t.1, 1 + %t.1 = call {i64*,i64} @ea5(i64* %hp.0, i64** %globasp.0) + %hp.1 = extractvalue {i64*,i64} %t.1, 0 + %t.2 = extractvalue {i64*,i64} %t.1, 1 %bsp.001 = call i64* @pushI(i64 %t.2, i64* %bsp.000) %asp.003 = call i64** @fillI_b(i64 0, i64 -0, i64* %bsp.001, i64** %asp.002) @@ -22,21 +26,27 @@ define {i64*,i64*} @n5(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 %t.3 = call i64* @peek_a(i64** %asp.003) %asp.004 = call i64** @pop_a1(i64** %asp.003) - %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*} @ea5(i64** %globasp.0, i64* %hp.0) { - %ret.0 = tail call {i64,i64*} @s5(i64** %globasp.0, i64* %hp.0) - ret {i64,i64*} %ret.0 +define private {i64*,i64} @ea5( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0) + nofree willreturn nosync nounwind argmemonly { + %ret.0 = tail call {i64*,i64} @s5(i64* %hp.0, i64** %globasp.0) + ret {i64*,i64} %ret.0 } -define private {i64,i64*} @s5(i64** %globasp.0, i64* %hp.0) { - %astack = alloca i64*, i64 10 +define private {i64*,i64} @s5( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0) + nofree willreturn nosync nounwind argmemonly { + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %t.0 = call {i64**,i64*} @buildI(i64 34, i64** %asp.000, i64* %hp.0) %asp.001 = extractvalue {i64**,i64*} %t.0, 0 @@ -44,15 +54,19 @@ define private {i64,i64*} @s5(i64** %globasp.0, i64* %hp.0) { %t.1 = call i64* @peek_a(i64** %asp.001) %asp.002 = call i64** @pop_a1(i64** %asp.001) - %t.2 = tail call {i64,i64*} @s4(i64* %t.1, i64** %globasp.0, i64* %hp.1) - ret {i64,i64*} %t.2 + %t.2 = tail call {i64*,i64} @s4(i64* %hp.1, i64** %globasp.0, i64* %t.1) + ret {i64*,i64} %t.2 } -define {i64,i64*} @s4(i64* %n, i64** %globasp.0, i64* %hp.0) noinline { - %astack = alloca i64*, i64 10 +define inreg {i64*,i64} @s4( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0, + i64* inreg align 8 nocapture nofree dereferenceable(3) %n) + nofree willreturn nosync nounwind argmemonly { + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %asp.001 = getelementptr i64*, i64** %asp.000, i64 1 store i64* %n, i64** %asp.001 @@ -80,9 +94,9 @@ l.0: %t.2 = call i64 @peek_b(i64* %bsp.100) %bsp.101 = call i64* @pop_b1(i64* %bsp.100) - %ret.0 = insertvalue {i64, i64*} undef, i64 %t.2, 0 - %ret.1 = insertvalue {i64, i64*} %ret.0, i64* %hp.1, 1 - ret {i64, i64*} %ret.1 + %ret.0 = insertvalue {i64*,i64} undef, i64* %hp.1, 0 + %ret.1 = insertvalue {i64*,i64} %ret.0, i64 %t.2, 1 + ret {i64*,i64} %ret.1 else.1: %t.3 = call {i64**,i64*} @buildI(i64 1, i64** %asp.003, i64* %hp.1) @@ -98,9 +112,9 @@ else.1: %t.6 = call i64* @peek_a(i64** %asp.202) %asp.203 = call i64** @pop_a1(i64** %asp.202) - %t.7 = call {i64,i64*} @s4(i64* %t.6, i64** %globasp.0, i64* %hp.3) - %t.8 = extractvalue {i64,i64*} %t.7, 0 - %hp.4 = extractvalue {i64,i64*} %t.7, 1 + %t.7 = call {i64*,i64} @s4(i64* %hp.3, i64** %globasp.0, i64* %t.6) + %hp.4 = extractvalue {i64*,i64} %t.7, 0 + %t.8 = extractvalue {i64*,i64} %t.7, 1 %bsp.200 = call i64* @pushI(i64 %t.8, i64* %bsp.008) %t.9 = call {i64**,i64*} @buildI(i64 2, i64** %asp.203, i64* %hp.4) @@ -116,9 +130,9 @@ else.1: %t.12 = call i64* @peek_a(i64** %asp.206) %asp.207 = call i64** @pop_a1(i64** %asp.206) - %t.13 = call {i64,i64*} @s4(i64* %t.12, i64** %globasp.0, i64* %hp.6) - %t.14 = extractvalue {i64,i64*} %t.13, 0 - %hp.7 = extractvalue {i64,i64*} %t.13, 1 + %t.13 = call {i64*,i64} @s4(i64* %hp.6, i64** %globasp.0, i64* %t.12) + %hp.7 = extractvalue {i64*,i64} %t.13, 0 + %t.14 = extractvalue {i64*,i64} %t.13, 1 %bsp.201 = call i64* @pushI(i64 %t.14, i64* %bsp.200) %bsp.202 = call i64* @addI(i64* %bsp.201) @@ -132,17 +146,21 @@ else.1: %t.15 = call i64 @peek_b(i64* %bsp.208) %bsp.209 = call i64* @pop_b1(i64* %bsp.208) - %ret.2 = insertvalue {i64, i64*} undef, i64 %t.15, 0 - %ret.3 = insertvalue {i64, i64*} %ret.2, i64* %hp.7, 1 - ret {i64, i64*} %ret.3 + %ret.2 = insertvalue {i64*,i64} undef, i64* %hp.7, 0 + %ret.3 = insertvalue {i64*,i64} %ret.2, i64 %t.15, 1 + ret {i64*,i64} %ret.3 } -define {i64*,i64*} @n2(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 +define {i64*,i64*} @n2( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0, + i64* inreg align 8 nocapture nofree dereferenceable(3) %n) + nofree willreturn nosync nounwind argmemonly align 8 prefix {i8*, i64} {i8* inttoptr (i64 0 to i8*), i64 2} { - %astack = alloca i64*, i64 10 + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %asp.001 = getelementptr i64*, i64** %asp.000, i64 1 store i64* %n, i64** %asp.001 @@ -155,9 +173,9 @@ define {i64*,i64*} @n2(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 %t.2 = call i64* @peek_a(i64** %asp.003) %asp.004 = call i64** @pop_a1(i64** %asp.003) %globasp.1 = call i64** @_push_local_astack(i64** %asp.004, i64** %asp.000, i64** %globasp.0) - %t.3 = call {i64, i64*} @ea2(i64* %t.1, i64* %t.2, i64** %globasp.1, i64* %hp.0) - %t.4 = extractvalue {i64, i64*} %t.3, 0 - %hp.1 = extractvalue {i64, i64*} %t.3, 1 + %t.3 = call {i64*,i64} @ea2(i64* %hp.0, i64** %globasp.1, i64* %t.1, i64* %t.2) + %hp.1 = extractvalue {i64*,i64} %t.3, 0 + %t.4 = extractvalue {i64*,i64} %t.3, 1 %bsp.001 = call i64* @pushI(i64 %t.4, i64* %bsp.000) %asp.005 = call i64** @fillI_b(i64 0, i64 -0, i64* %bsp.001, i64** %asp.004) @@ -166,16 +184,21 @@ define {i64*,i64*} @n2(i64* %n, i64** %globasp.0, i64* %hp.0) align 8 %t.5 = call i64* @peek_a(i64** %asp.005) %asp.006 = call i64** @pop_a1(i64** %asp.005) - %ret.0 = insertvalue {i64*, i64*} undef, i64* %t.5, 0 - %ret.1 = insertvalue {i64*, i64*} %ret.0, i64* %hp.0, 1 + %ret.0 = insertvalue {i64*, i64*} undef, i64* %hp.0, 0 + %ret.1 = insertvalue {i64*, i64*} %ret.0, i64* %t.5, 1 ret {i64*, i64*} %ret.1 } -define private {i64, i64*} @ea2(i64* %arg1, i64* %arg2, i64** %globasp.0, i64* %hp.0) { - %astack = alloca i64*, i64 10 +define private {i64*,i64} @ea2( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0, + i64* inreg align 8 nofree nonnull %arg1, + i64* inreg align 8 nofree nonnull %arg2) + nofree willreturn nosync nounwind argmemonly { + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %asp.001 = getelementptr i64*, i64** %asp.000, i64 1 store i64* %arg2, i64** %asp.001 @@ -194,15 +217,20 @@ define private {i64, i64*} @ea2(i64* %arg1, i64* %arg2, i64** %globasp.0, i64* % %t.1 = call i64 @peek_b(i64* %bsp.003) %bsp.004 = call i64* @pop_b1(i64* %bsp.003) - %ret = tail call {i64, i64*} @s2(i64 %t.0, i64 %t.1, i64* %hp.2) - ret {i64, i64*} %ret + %ret = tail call {i64*,i64} @s2(i64* %hp.2, i64** %globasp.0, i64 %t.0, i64 %t.1) + ret {i64*,i64} %ret } -define private {i64, i64*} @s2 (i64 %arg1, i64 %arg2, i64* %hp.0) { - %astack = alloca i64*, i64 10 +define private {i64*,i64} @s2( + i64* inreg align 8 nocapture nofree nonnull %hp.0, + i64** inreg align 8 noalias nocapture nofree nonnull %globasp.0, + i64 inreg %arg1, + i64 inreg %arg2) + nofree willreturn nosync nounwind argmemonly { + %astack = alloca i64*, i64 5 %asp.000 = getelementptr i64*, i64** %astack - %bstack = alloca i64, i64 10 - %bsp.000 = getelementptr i64, i64* %bstack, i64 9 + %bstack = alloca i64, i64 5 + %bsp.000 = getelementptr i64, i64* %bstack, i64 4 %bsp.001 = call i64* @pushI(i64 %arg2, i64* %bsp.000) %bsp.002 = call i64* @pushI(i64 %arg1, i64* %bsp.001) @@ -212,9 +240,9 @@ define private {i64, i64*} @s2 (i64 %arg1, i64 %arg2, i64* %hp.0) { %t.0 = call i64 @peek_b(i64* %bsp.003) %bsp.004 = call i64* @pop_b1(i64* %bsp.003) - %ret.0 = insertvalue {i64, i64*} undef, i64 %t.0, 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 %t.0, 1 + ret {i64*,i64} %ret.1 } define i64 @main() { @@ -225,9 +253,9 @@ define i64 @main() { store i64 ptrtoint ({i64*,i64*}(i64*,i64**,i64*)* @n5 to i64), i64* %n.0 %hp.1 = getelementptr i64, i64* %hp.0, i64 3 - %t.0 = call {i64*,i64*} @n5(i64* %n.0, i64** %astack, i64* %hp.1) - %n.1 = extractvalue {i64*,i64*} %t.0, 0 - %hp.2 = extractvalue {i64*,i64*} %t.0, 1 + %t.0 = call {i64*,i64*} @n5(i64* %hp.1, i64** %astack, i64* %n.0) + %hp.2 = extractvalue {i64*,i64*} %t.0, 0 + %n.1 = extractvalue {i64*,i64*} %t.0, 1 %n.1.0 = getelementptr i64, i64* %n.1, i64 1 %r = load i64, i64* %n.1.0 |