TC-8 Samples
First consider simple examples, without any branching:
tens.tig
10 + 20 * 30
tc -I tens.tig
$ tc -I tens.tig
# == Final assembler ouput. == #
# Routine: _main
tc_main:
# Allocate frame
move $x13, $ra
move $x5, $s0
move $x6, $s1
move $x7, $s2
move $x8, $s3
move $x9, $s4
move $x10, $s5
move $x11, $s6
move $x12, $s7
l0:
li $x1, 10
li $x2, 20
mul $x3, $x2, 30
add $x4, $x1, $x3
l1:
move $s0, $x5
move $s1, $x6
move $s2, $x7
move $s3, $x8
move $s4, $x9
move $s5, $x10
move $s6, $x11
move $s7, $x12
move $ra, $x13
# Deallocate frame
jr $ra
$ echo $?
0
tc -FVN tens.tig
$ tc -FVN tens.tig
$ echo $?
0
![/* Graph Visualization */
digraph "tens.main._main.flow.gv" {
node [shape=box];
"0" [label="tc_main:"]
"1" [label="# Allocate frame"]
"2" [label=" move t13, $ra"]
"3" [label=" move t5, $s0"]
"4" [label=" move t6, $s1"]
"5" [label=" move t7, $s2"]
"6" [label=" move t8, $s3"]
"7" [label=" move t9, $s4"]
"8" [label=" move t10, $s5"]
"9" [label=" move t11, $s6"]
"10" [label=" move t12, $s7"]
"11" [label="l0:"]
"12" [label=" li t1, 10"]
"13" [label=" li t2, 20"]
"14" [label=" mul t3, t2, 30"]
"15" [label=" add t4, t1, t3"]
"16" [label="l1:"]
"17" [label=" move $s0, t5"]
"18" [label=" move $s1, t6"]
"19" [label=" move $s2, t7"]
"20" [label=" move $s3, t8"]
"21" [label=" move $s4, t9"]
"22" [label=" move $s5, t10"]
"23" [label=" move $s6, t11"]
"24" [label=" move $s7, t12"]
"25" [label=" move $ra, t13"]
"26" [label="# Deallocate frame"]
"27" [label=" jr $ra"]
"0" -> "1"
"1" -> "2"
"2" -> "3"
"3" -> "4"
"4" -> "5"
"5" -> "6"
"6" -> "7"
"7" -> "8"
"8" -> "9"
"9" -> "10"
"10" -> "11"
"11" -> "12"
"12" -> "13"
"13" -> "14"
"14" -> "15"
"15" -> "16"
"16" -> "17"
"17" -> "18"
"18" -> "19"
"19" -> "20"
"20" -> "21"
"21" -> "22"
"22" -> "23"
"23" -> "24"
"24" -> "25"
"25" -> "26"
"26" -> "27"
}](../../_images/graphviz-b6bf4dbc38293aac4d36cd3e81d712d19f0d99c2.png)
tens.main._main.flow.gv
![/* Graph Visualization */
digraph "tens.main._main.liveness.gv" {
node [shape=box];
"0" [label="tc_main:"]
"1" [label="# Allocate frame"]
"2" [label=" move $x13, $ra"]
"3" [label=" move $x5, $s0"]
"4" [label=" move $x6, $s1"]
"5" [label=" move $x7, $s2"]
"6" [label=" move $x8, $s3"]
"7" [label=" move $x9, $s4"]
"8" [label=" move $x10, $s5"]
"9" [label=" move $x11, $s6"]
"10" [label=" move $x12, $s7"]
"11" [label="l0:"]
"12" [label=" li $x1, 10"]
"13" [label=" li $x2, 20"]
"14" [label=" mul $x3, $x2, 30"]
"15" [label=" add $x4, $x1, $x3"]
"16" [label="l1:"]
"17" [label=" move $s0, $x5"]
"18" [label=" move $s1, $x6"]
"19" [label=" move $s2, $x7"]
"20" [label=" move $s3, $x8"]
"21" [label=" move $s4, $x9"]
"22" [label=" move $s5, $x10"]
"23" [label=" move $s6, $x11"]
"24" [label=" move $s7, $x12"]
"25" [label=" move $ra, $x13"]
"26" [label="# Deallocate frame"]
"27" [label=" jr $ra"]
"0" -> "1" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"1" -> "2" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"2" -> "3" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x13 $zero"]
"3" -> "4" [label="$fp $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x13 $x5 $zero"]
"4" -> "5" [label="$fp $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x13 $x5 $x6 $zero"]
"5" -> "6" [label="$fp $s3 $s4 $s5 $s6 $s7 $sp $v0 $x13 $x5 $x6 $x7 $zero"]
"6" -> "7" [label="$fp $s4 $s5 $s6 $s7 $sp $v0 $x13 $x5 $x6 $x7 $x8 $zero"]
"7" -> "8" [label="$fp $s5 $s6 $s7 $sp $v0 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"8" -> "9" [label="$fp $s6 $s7 $sp $v0 $x10 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"9" -> "10" [label="$fp $s7 $sp $v0 $x10 $x11 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"10" -> "11" [label="$fp $sp $v0 $x10 $x11 $x12 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"11" -> "12" [label="$fp $sp $v0 $x10 $x11 $x12 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"12" -> "13" [label="$fp $sp $v0 $x1 $x10 $x11 $x12 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"13" -> "14" [label="$fp $sp $v0 $x1 $x10 $x11 $x12 $x13 $x2 $x5 $x6 $x7 $x8 $x9 $zero"]
"14" -> "15" [label="$fp $sp $v0 $x1 $x10 $x11 $x12 $x13 $x3 $x5 $x6 $x7 $x8 $x9 $zero"]
"15" -> "16" [label="$fp $sp $v0 $x10 $x11 $x12 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"16" -> "17" [label="$fp $sp $v0 $x10 $x11 $x12 $x13 $x5 $x6 $x7 $x8 $x9 $zero"]
"17" -> "18" [label="$fp $s0 $sp $v0 $x10 $x11 $x12 $x13 $x6 $x7 $x8 $x9 $zero"]
"18" -> "19" [label="$fp $s0 $s1 $sp $v0 $x10 $x11 $x12 $x13 $x7 $x8 $x9 $zero"]
"19" -> "20" [label="$fp $s0 $s1 $s2 $sp $v0 $x10 $x11 $x12 $x13 $x8 $x9 $zero"]
"20" -> "21" [label="$fp $s0 $s1 $s2 $s3 $sp $v0 $x10 $x11 $x12 $x13 $x9 $zero"]
"21" -> "22" [label="$fp $s0 $s1 $s2 $s3 $s4 $sp $v0 $x10 $x11 $x12 $x13 $zero"]
"22" -> "23" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $sp $v0 $x11 $x12 $x13 $zero"]
"23" -> "24" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $sp $v0 $x12 $x13 $zero"]
"24" -> "25" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x13 $zero"]
"25" -> "26" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"26" -> "27" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
}](../../_images/graphviz-36c65d5d50ebd15b5a05c4554ef8b17f63a3b94a.png)
tens.main._main.liveness.gv
![/* Graph Visualization */
graph "tens.main._main" {
node [shape=box];
"0" [label="$a0"]
"1" [label="$fp"]
"2" [label="$ra"]
"3" [label="$s0"]
"4" [label="$s1"]
"5" [label="$s2"]
"6" [label="$s3"]
"7" [label="$s4"]
"8" [label="$s5"]
"9" [label="$s6"]
"10" [label="$s7"]
"11" [label="$sp"]
"12" [label="$v0"]
"13" [label="$zero"]
"14" [label="$a1"]
"15" [label="$a2"]
"16" [label="$a3"]
"17" [label="$x13"]
"18" [label="$x5"]
"19" [label="$x6"]
"20" [label="$x7"]
"21" [label="$x8"]
"22" [label="$x9"]
"23" [label="$x10"]
"24" [label="$x11"]
"25" [label="$x12"]
"26" [label="$x1"]
"27" [label="$x2"]
"28" [label="$x3"]
"29" [label="$x4"]
"0" -- "1"
"0" -- "2"
"0" -- "3"
"0" -- "4"
"0" -- "5"
"0" -- "6"
"0" -- "7"
"0" -- "8"
"0" -- "9"
"0" -- "10"
"0" -- "11"
"0" -- "12"
"0" -- "13"
"1" -- "14"
"2" -- "14"
"3" -- "14"
"4" -- "14"
"5" -- "14"
"6" -- "14"
"7" -- "14"
"8" -- "14"
"9" -- "14"
"10" -- "14"
"11" -- "14"
"12" -- "14"
"13" -- "14"
"1" -- "15"
"2" -- "15"
"3" -- "15"
"4" -- "15"
"5" -- "15"
"6" -- "15"
"7" -- "15"
"8" -- "15"
"9" -- "15"
"10" -- "15"
"11" -- "15"
"12" -- "15"
"13" -- "15"
"1" -- "16"
"2" -- "16"
"3" -- "16"
"4" -- "16"
"5" -- "16"
"6" -- "16"
"7" -- "16"
"8" -- "16"
"9" -- "16"
"10" -- "16"
"11" -- "16"
"12" -- "16"
"13" -- "16"
"1" -- "3"
"2" -- "3"
"3" -- "4"
"3" -- "5"
"3" -- "6"
"3" -- "7"
"3" -- "8"
"3" -- "9"
"3" -- "10"
"3" -- "11"
"3" -- "12"
"3" -- "13"
"1" -- "4"
"2" -- "4"
"4" -- "5"
"4" -- "6"
"4" -- "7"
"4" -- "8"
"4" -- "9"
"4" -- "10"
"4" -- "11"
"4" -- "12"
"4" -- "13"
"1" -- "5"
"2" -- "5"
"5" -- "6"
"5" -- "7"
"5" -- "8"
"5" -- "9"
"5" -- "10"
"5" -- "11"
"5" -- "12"
"5" -- "13"
"1" -- "6"
"2" -- "6"
"6" -- "7"
"6" -- "8"
"6" -- "9"
"6" -- "10"
"6" -- "11"
"6" -- "12"
"6" -- "13"
"1" -- "7"
"2" -- "7"
"7" -- "8"
"7" -- "9"
"7" -- "10"
"7" -- "11"
"7" -- "12"
"7" -- "13"
"1" -- "8"
"2" -- "8"
"8" -- "9"
"8" -- "10"
"8" -- "11"
"8" -- "12"
"8" -- "13"
"1" -- "9"
"2" -- "9"
"9" -- "10"
"9" -- "11"
"9" -- "12"
"9" -- "13"
"1" -- "10"
"2" -- "10"
"10" -- "11"
"10" -- "12"
"10" -- "13"
"1" -- "2"
"1" -- "11"
"1" -- "12"
"1" -- "13"
"2" -- "11"
"11" -- "12"
"11" -- "13"
"2" -- "12"
"12" -- "13"
"2" -- "13"
"1" -- "17"
"3" -- "17"
"4" -- "17"
"5" -- "17"
"6" -- "17"
"7" -- "17"
"8" -- "17"
"9" -- "17"
"10" -- "17"
"11" -- "17"
"12" -- "17"
"13" -- "17"
"1" -- "18"
"4" -- "18"
"5" -- "18"
"6" -- "18"
"7" -- "18"
"8" -- "18"
"9" -- "18"
"10" -- "18"
"11" -- "18"
"12" -- "18"
"17" -- "18"
"13" -- "18"
"1" -- "19"
"5" -- "19"
"6" -- "19"
"7" -- "19"
"8" -- "19"
"9" -- "19"
"10" -- "19"
"11" -- "19"
"12" -- "19"
"17" -- "19"
"18" -- "19"
"13" -- "19"
"1" -- "20"
"6" -- "20"
"7" -- "20"
"8" -- "20"
"9" -- "20"
"10" -- "20"
"11" -- "20"
"12" -- "20"
"17" -- "20"
"18" -- "20"
"19" -- "20"
"13" -- "20"
"1" -- "21"
"7" -- "21"
"8" -- "21"
"9" -- "21"
"10" -- "21"
"11" -- "21"
"12" -- "21"
"17" -- "21"
"18" -- "21"
"19" -- "21"
"20" -- "21"
"13" -- "21"
"1" -- "22"
"8" -- "22"
"9" -- "22"
"10" -- "22"
"11" -- "22"
"12" -- "22"
"17" -- "22"
"18" -- "22"
"19" -- "22"
"20" -- "22"
"21" -- "22"
"13" -- "22"
"1" -- "23"
"9" -- "23"
"10" -- "23"
"11" -- "23"
"12" -- "23"
"17" -- "23"
"18" -- "23"
"19" -- "23"
"20" -- "23"
"21" -- "23"
"22" -- "23"
"13" -- "23"
"1" -- "24"
"10" -- "24"
"11" -- "24"
"12" -- "24"
"23" -- "24"
"17" -- "24"
"18" -- "24"
"19" -- "24"
"20" -- "24"
"21" -- "24"
"22" -- "24"
"13" -- "24"
"1" -- "25"
"11" -- "25"
"12" -- "25"
"23" -- "25"
"24" -- "25"
"17" -- "25"
"18" -- "25"
"19" -- "25"
"20" -- "25"
"21" -- "25"
"22" -- "25"
"13" -- "25"
"1" -- "26"
"11" -- "26"
"12" -- "26"
"23" -- "26"
"24" -- "26"
"25" -- "26"
"17" -- "26"
"18" -- "26"
"19" -- "26"
"20" -- "26"
"21" -- "26"
"22" -- "26"
"13" -- "26"
"1" -- "27"
"11" -- "27"
"12" -- "27"
"26" -- "27"
"23" -- "27"
"24" -- "27"
"25" -- "27"
"17" -- "27"
"18" -- "27"
"19" -- "27"
"20" -- "27"
"21" -- "27"
"22" -- "27"
"13" -- "27"
"1" -- "28"
"11" -- "28"
"12" -- "28"
"26" -- "28"
"23" -- "28"
"24" -- "28"
"25" -- "28"
"17" -- "28"
"18" -- "28"
"19" -- "28"
"20" -- "28"
"21" -- "28"
"22" -- "28"
"13" -- "28"
"1" -- "29"
"11" -- "29"
"12" -- "29"
"23" -- "29"
"24" -- "29"
"25" -- "29"
"17" -- "29"
"18" -- "29"
"19" -- "29"
"20" -- "29"
"21" -- "29"
"22" -- "29"
"13" -- "29"
"3" -- "23"
"3" -- "24"
"3" -- "25"
"3" -- "19"
"3" -- "20"
"3" -- "21"
"3" -- "22"
"4" -- "23"
"4" -- "24"
"4" -- "25"
"4" -- "20"
"4" -- "21"
"4" -- "22"
"5" -- "23"
"5" -- "24"
"5" -- "25"
"5" -- "21"
"5" -- "22"
"6" -- "23"
"6" -- "24"
"6" -- "25"
"6" -- "22"
"7" -- "23"
"7" -- "24"
"7" -- "25"
"8" -- "24"
"8" -- "25"
"9" -- "25"
/* Move related edges. */
"2" -- "17" [style=dashed]
"3" -- "18" [style=dashed]
"4" -- "19" [style=dashed]
"5" -- "20" [style=dashed]
"6" -- "21" [style=dashed]
"7" -- "22" [style=dashed]
"8" -- "23" [style=dashed]
"9" -- "24" [style=dashed]
"10" -- "25" [style=dashed]
}](../../_images/graphviz-6c4da2295680c9a7b3fe8cf7c34c010b994a53b0.png)
tens.main._main.interference.gv
But as you can see, the result is quite hairy, and unreadable, especially for interference graphs:
the callee save registers (
$s0
to$s7
on Mips) collide with every other temporary.the callee save registers have to be… saved, which doubles the number of
Temp
.
To circumvent this problem, use --callee-save
to limit the
number of such registers.
hundreds.tig
100 + 200 * 300
tc --callee-save=0 -VN hundreds.tig
$ tc --callee-save=0 -VN hundreds.tig
$ echo $?
0
![/* Graph Visualization */
digraph "hundreds.main._main.liveness.gv" {
node [shape=box];
"0" [label="tc_main:"]
"1" [label="# Allocate frame"]
"2" [label=" move $x5, $ra"]
"3" [label="l0:"]
"4" [label=" li $x1, 100"]
"5" [label=" li $x2, 200"]
"6" [label=" mul $x3, $x2, 300"]
"7" [label=" add $x4, $x1, $x3"]
"8" [label="l1:"]
"9" [label=" move $ra, $x5"]
"10" [label="# Deallocate frame"]
"11" [label=" jr $ra"]
"0" -> "1" [label="$fp $ra $sp $v0 $zero"]
"1" -> "2" [label="$fp $ra $sp $v0 $zero"]
"2" -> "3" [label="$fp $sp $v0 $x5 $zero"]
"3" -> "4" [label="$fp $sp $v0 $x5 $zero"]
"4" -> "5" [label="$fp $sp $v0 $x1 $x5 $zero"]
"5" -> "6" [label="$fp $sp $v0 $x1 $x2 $x5 $zero"]
"6" -> "7" [label="$fp $sp $v0 $x1 $x3 $x5 $zero"]
"7" -> "8" [label="$fp $sp $v0 $x5 $zero"]
"8" -> "9" [label="$fp $sp $v0 $x5 $zero"]
"9" -> "10" [label="$fp $ra $sp $v0 $zero"]
"10" -> "11" [label="$fp $ra $sp $v0 $zero"]
}](../../_images/graphviz-e5512bc037da3c57472d011072a800dee88bfe2e.png)
hundreds.main._main.liveness.gv
![/* Graph Visualization */
graph "hundreds.main._main" {
node [shape=box];
"0" [label="$a0"]
"1" [label="$fp"]
"2" [label="$ra"]
"3" [label="$sp"]
"4" [label="$v0"]
"5" [label="$zero"]
"6" [label="$a1"]
"7" [label="$a2"]
"8" [label="$a3"]
"9" [label="$x5"]
"10" [label="$x1"]
"11" [label="$x2"]
"12" [label="$x3"]
"13" [label="$x4"]
"0" -- "1"
"0" -- "2"
"0" -- "3"
"0" -- "4"
"0" -- "5"
"1" -- "6"
"2" -- "6"
"3" -- "6"
"4" -- "6"
"5" -- "6"
"1" -- "7"
"2" -- "7"
"3" -- "7"
"4" -- "7"
"5" -- "7"
"1" -- "8"
"2" -- "8"
"3" -- "8"
"4" -- "8"
"5" -- "8"
"1" -- "2"
"1" -- "3"
"1" -- "4"
"1" -- "5"
"2" -- "3"
"3" -- "4"
"3" -- "5"
"2" -- "4"
"4" -- "5"
"2" -- "5"
"1" -- "9"
"3" -- "9"
"4" -- "9"
"5" -- "9"
"1" -- "10"
"3" -- "10"
"4" -- "10"
"9" -- "10"
"5" -- "10"
"1" -- "11"
"3" -- "11"
"4" -- "11"
"10" -- "11"
"9" -- "11"
"5" -- "11"
"1" -- "12"
"3" -- "12"
"4" -- "12"
"10" -- "12"
"9" -- "12"
"5" -- "12"
"1" -- "13"
"3" -- "13"
"4" -- "13"
"9" -- "13"
"5" -- "13"
/* Move related edges. */
"2" -- "9" [style=dashed]
}](../../_images/graphviz-ea6f198e6b8b598185102bd259a60ac95f06ea4f.png)
hundreds.main._main.interference.gv
Branching is of course a most interesting feature to exercise.
ors.tig
1 | 2 | 3
tc --callee-save=0 -I ors.tig
$ tc --callee-save=0 -I ors.tig
# == Final assembler ouput. == #
# Routine: _main
tc_main:
# Allocate frame
move $x4, $ra
l5:
li $x1, 1
bne $x1, 0, l3
l4:
li $x2, 2
bne $x2, 0, l0
l1:
l2:
j l6
l0:
j l2
l3:
li $x3, 1
bne $x3, 0, l0
l7:
j l1
l6:
move $ra, $x4
# Deallocate frame
jr $ra
$ echo $?
0
tc -FVN ors.tig
$ tc -FVN ors.tig
$ echo $?
0
![/* Graph Visualization */
digraph "ors.main._main.flow.gv" {
node [shape=box];
"0" [label="tc_main:"]
"1" [label="# Allocate frame"]
"2" [label=" move t12, $ra"]
"3" [label=" move t4, $s0"]
"4" [label=" move t5, $s1"]
"5" [label=" move t6, $s2"]
"6" [label=" move t7, $s3"]
"7" [label=" move t8, $s4"]
"8" [label=" move t9, $s5"]
"9" [label=" move t10, $s6"]
"10" [label=" move t11, $s7"]
"11" [label="l5:"]
"12" [label=" li t1, 1"]
"13" [label=" bne t1, 0, l3"]
"14" [label="l4:"]
"15" [label=" li t2, 2"]
"16" [label=" bne t2, 0, l0"]
"17" [label="l1:"]
"18" [label="l2:"]
"19" [label=" j l6"]
"20" [label="l0:"]
"21" [label=" j l2"]
"22" [label="l3:"]
"23" [label=" li t3, 1"]
"24" [label=" bne t3, 0, l0"]
"25" [label="l7:"]
"26" [label=" j l1"]
"27" [label="l6:"]
"28" [label=" move $s0, t4"]
"29" [label=" move $s1, t5"]
"30" [label=" move $s2, t6"]
"31" [label=" move $s3, t7"]
"32" [label=" move $s4, t8"]
"33" [label=" move $s5, t9"]
"34" [label=" move $s6, t10"]
"35" [label=" move $s7, t11"]
"36" [label=" move $ra, t12"]
"37" [label="# Deallocate frame"]
"38" [label=" jr $ra"]
"0" -> "1"
"1" -> "2"
"2" -> "3"
"3" -> "4"
"4" -> "5"
"5" -> "6"
"6" -> "7"
"7" -> "8"
"8" -> "9"
"9" -> "10"
"10" -> "11"
"11" -> "12"
"12" -> "13"
"14" -> "15"
"15" -> "16"
"17" -> "18"
"18" -> "19"
"20" -> "21"
"22" -> "23"
"23" -> "24"
"25" -> "26"
"27" -> "28"
"28" -> "29"
"29" -> "30"
"30" -> "31"
"31" -> "32"
"32" -> "33"
"33" -> "34"
"34" -> "35"
"35" -> "36"
"36" -> "37"
"37" -> "38"
"13" -> "22"
"13" -> "14"
"16" -> "20"
"16" -> "17"
"19" -> "27"
"21" -> "18"
"24" -> "20"
"24" -> "25"
"26" -> "17"
}](../../_images/graphviz-6f79c687701353b7ec521db07ed3d34497aa0cbc.png)
ors.main._main.flow.gv
![/* Graph Visualization */
digraph "ors.main._main.liveness.gv" {
node [shape=box];
"0" [label="tc_main:"]
"1" [label="# Allocate frame"]
"2" [label=" move $x12, $ra"]
"3" [label=" move $x4, $s0"]
"4" [label=" move $x5, $s1"]
"5" [label=" move $x6, $s2"]
"6" [label=" move $x7, $s3"]
"7" [label=" move $x8, $s4"]
"8" [label=" move $x9, $s5"]
"9" [label=" move $x10, $s6"]
"10" [label=" move $x11, $s7"]
"11" [label="l5:"]
"12" [label=" li $x1, 1"]
"13" [label=" bne $x1, 0, l3"]
"14" [label="l4:"]
"15" [label=" li $x2, 2"]
"16" [label=" bne $x2, 0, l0"]
"17" [label="l1:"]
"18" [label="l2:"]
"19" [label=" j l6"]
"20" [label="l0:"]
"21" [label=" j l2"]
"22" [label="l3:"]
"23" [label=" li $x3, 1"]
"24" [label=" bne $x3, 0, l0"]
"25" [label="l7:"]
"26" [label=" j l1"]
"27" [label="l6:"]
"28" [label=" move $s0, $x4"]
"29" [label=" move $s1, $x5"]
"30" [label=" move $s2, $x6"]
"31" [label=" move $s3, $x7"]
"32" [label=" move $s4, $x8"]
"33" [label=" move $s5, $x9"]
"34" [label=" move $s6, $x10"]
"35" [label=" move $s7, $x11"]
"36" [label=" move $ra, $x12"]
"37" [label="# Deallocate frame"]
"38" [label=" jr $ra"]
"0" -> "1" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"1" -> "2" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"2" -> "3" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x12 $zero"]
"3" -> "4" [label="$fp $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x12 $x4 $zero"]
"4" -> "5" [label="$fp $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x12 $x4 $x5 $zero"]
"5" -> "6" [label="$fp $s3 $s4 $s5 $s6 $s7 $sp $v0 $x12 $x4 $x5 $x6 $zero"]
"6" -> "7" [label="$fp $s4 $s5 $s6 $s7 $sp $v0 $x12 $x4 $x5 $x6 $x7 $zero"]
"7" -> "8" [label="$fp $s5 $s6 $s7 $sp $v0 $x12 $x4 $x5 $x6 $x7 $x8 $zero"]
"8" -> "9" [label="$fp $s6 $s7 $sp $v0 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"9" -> "10" [label="$fp $s7 $sp $v0 $x10 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"10" -> "11" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"11" -> "12" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"12" -> "13" [label="$fp $sp $v0 $x1 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"14" -> "15" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"15" -> "16" [label="$fp $sp $v0 $x10 $x11 $x12 $x2 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"17" -> "18" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"18" -> "19" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"20" -> "21" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"22" -> "23" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"23" -> "24" [label="$fp $sp $v0 $x10 $x11 $x12 $x3 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"25" -> "26" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"27" -> "28" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"28" -> "29" [label="$fp $s0 $sp $v0 $x10 $x11 $x12 $x5 $x6 $x7 $x8 $x9 $zero"]
"29" -> "30" [label="$fp $s0 $s1 $sp $v0 $x10 $x11 $x12 $x6 $x7 $x8 $x9 $zero"]
"30" -> "31" [label="$fp $s0 $s1 $s2 $sp $v0 $x10 $x11 $x12 $x7 $x8 $x9 $zero"]
"31" -> "32" [label="$fp $s0 $s1 $s2 $s3 $sp $v0 $x10 $x11 $x12 $x8 $x9 $zero"]
"32" -> "33" [label="$fp $s0 $s1 $s2 $s3 $s4 $sp $v0 $x10 $x11 $x12 $x9 $zero"]
"33" -> "34" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $sp $v0 $x10 $x11 $x12 $zero"]
"34" -> "35" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $sp $v0 $x11 $x12 $zero"]
"35" -> "36" [label="$fp $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $x12 $zero"]
"36" -> "37" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"37" -> "38" [label="$fp $ra $s0 $s1 $s2 $s3 $s4 $s5 $s6 $s7 $sp $v0 $zero"]
"13" -> "22" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"13" -> "14" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"16" -> "20" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"16" -> "17" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"19" -> "27" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"21" -> "18" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"24" -> "20" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"24" -> "25" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
"26" -> "17" [label="$fp $sp $v0 $x10 $x11 $x12 $x4 $x5 $x6 $x7 $x8 $x9 $zero"]
}](../../_images/graphviz-656150400125825e5e8d2a80c4cd1d75594106ae.png)
ors.main._main.liveness.gv
![/* Graph Visualization */
graph "ors.main._main" {
node [shape=box];
"0" [label="$a0"]
"1" [label="$fp"]
"2" [label="$ra"]
"3" [label="$s0"]
"4" [label="$s1"]
"5" [label="$s2"]
"6" [label="$s3"]
"7" [label="$s4"]
"8" [label="$s5"]
"9" [label="$s6"]
"10" [label="$s7"]
"11" [label="$sp"]
"12" [label="$v0"]
"13" [label="$zero"]
"14" [label="$a1"]
"15" [label="$a2"]
"16" [label="$a3"]
"17" [label="$x12"]
"18" [label="$x4"]
"19" [label="$x5"]
"20" [label="$x6"]
"21" [label="$x7"]
"22" [label="$x8"]
"23" [label="$x9"]
"24" [label="$x10"]
"25" [label="$x11"]
"26" [label="$x1"]
"27" [label="$x2"]
"28" [label="$x3"]
"0" -- "1"
"0" -- "2"
"0" -- "3"
"0" -- "4"
"0" -- "5"
"0" -- "6"
"0" -- "7"
"0" -- "8"
"0" -- "9"
"0" -- "10"
"0" -- "11"
"0" -- "12"
"0" -- "13"
"1" -- "14"
"2" -- "14"
"3" -- "14"
"4" -- "14"
"5" -- "14"
"6" -- "14"
"7" -- "14"
"8" -- "14"
"9" -- "14"
"10" -- "14"
"11" -- "14"
"12" -- "14"
"13" -- "14"
"1" -- "15"
"2" -- "15"
"3" -- "15"
"4" -- "15"
"5" -- "15"
"6" -- "15"
"7" -- "15"
"8" -- "15"
"9" -- "15"
"10" -- "15"
"11" -- "15"
"12" -- "15"
"13" -- "15"
"1" -- "16"
"2" -- "16"
"3" -- "16"
"4" -- "16"
"5" -- "16"
"6" -- "16"
"7" -- "16"
"8" -- "16"
"9" -- "16"
"10" -- "16"
"11" -- "16"
"12" -- "16"
"13" -- "16"
"1" -- "3"
"2" -- "3"
"3" -- "4"
"3" -- "5"
"3" -- "6"
"3" -- "7"
"3" -- "8"
"3" -- "9"
"3" -- "10"
"3" -- "11"
"3" -- "12"
"3" -- "13"
"1" -- "4"
"2" -- "4"
"4" -- "5"
"4" -- "6"
"4" -- "7"
"4" -- "8"
"4" -- "9"
"4" -- "10"
"4" -- "11"
"4" -- "12"
"4" -- "13"
"1" -- "5"
"2" -- "5"
"5" -- "6"
"5" -- "7"
"5" -- "8"
"5" -- "9"
"5" -- "10"
"5" -- "11"
"5" -- "12"
"5" -- "13"
"1" -- "6"
"2" -- "6"
"6" -- "7"
"6" -- "8"
"6" -- "9"
"6" -- "10"
"6" -- "11"
"6" -- "12"
"6" -- "13"
"1" -- "7"
"2" -- "7"
"7" -- "8"
"7" -- "9"
"7" -- "10"
"7" -- "11"
"7" -- "12"
"7" -- "13"
"1" -- "8"
"2" -- "8"
"8" -- "9"
"8" -- "10"
"8" -- "11"
"8" -- "12"
"8" -- "13"
"1" -- "9"
"2" -- "9"
"9" -- "10"
"9" -- "11"
"9" -- "12"
"9" -- "13"
"1" -- "10"
"2" -- "10"
"10" -- "11"
"10" -- "12"
"10" -- "13"
"1" -- "2"
"1" -- "11"
"1" -- "12"
"1" -- "13"
"2" -- "11"
"11" -- "12"
"11" -- "13"
"2" -- "12"
"12" -- "13"
"2" -- "13"
"1" -- "17"
"3" -- "17"
"4" -- "17"
"5" -- "17"
"6" -- "17"
"7" -- "17"
"8" -- "17"
"9" -- "17"
"10" -- "17"
"11" -- "17"
"12" -- "17"
"13" -- "17"
"1" -- "18"
"4" -- "18"
"5" -- "18"
"6" -- "18"
"7" -- "18"
"8" -- "18"
"9" -- "18"
"10" -- "18"
"11" -- "18"
"12" -- "18"
"17" -- "18"
"13" -- "18"
"1" -- "19"
"5" -- "19"
"6" -- "19"
"7" -- "19"
"8" -- "19"
"9" -- "19"
"10" -- "19"
"11" -- "19"
"12" -- "19"
"17" -- "19"
"18" -- "19"
"13" -- "19"
"1" -- "20"
"6" -- "20"
"7" -- "20"
"8" -- "20"
"9" -- "20"
"10" -- "20"
"11" -- "20"
"12" -- "20"
"17" -- "20"
"18" -- "20"
"19" -- "20"
"13" -- "20"
"1" -- "21"
"7" -- "21"
"8" -- "21"
"9" -- "21"
"10" -- "21"
"11" -- "21"
"12" -- "21"
"17" -- "21"
"18" -- "21"
"19" -- "21"
"20" -- "21"
"13" -- "21"
"1" -- "22"
"8" -- "22"
"9" -- "22"
"10" -- "22"
"11" -- "22"
"12" -- "22"
"17" -- "22"
"18" -- "22"
"19" -- "22"
"20" -- "22"
"21" -- "22"
"13" -- "22"
"1" -- "23"
"9" -- "23"
"10" -- "23"
"11" -- "23"
"12" -- "23"
"17" -- "23"
"18" -- "23"
"19" -- "23"
"20" -- "23"
"21" -- "23"
"22" -- "23"
"13" -- "23"
"1" -- "24"
"10" -- "24"
"11" -- "24"
"12" -- "24"
"17" -- "24"
"18" -- "24"
"19" -- "24"
"20" -- "24"
"21" -- "24"
"22" -- "24"
"23" -- "24"
"13" -- "24"
"1" -- "25"
"11" -- "25"
"12" -- "25"
"24" -- "25"
"17" -- "25"
"18" -- "25"
"19" -- "25"
"20" -- "25"
"21" -- "25"
"22" -- "25"
"23" -- "25"
"13" -- "25"
"1" -- "26"
"11" -- "26"
"12" -- "26"
"24" -- "26"
"25" -- "26"
"17" -- "26"
"18" -- "26"
"19" -- "26"
"20" -- "26"
"21" -- "26"
"22" -- "26"
"23" -- "26"
"13" -- "26"
"1" -- "27"
"11" -- "27"
"12" -- "27"
"24" -- "27"
"25" -- "27"
"17" -- "27"
"18" -- "27"
"19" -- "27"
"20" -- "27"
"21" -- "27"
"22" -- "27"
"23" -- "27"
"13" -- "27"
"1" -- "28"
"11" -- "28"
"12" -- "28"
"24" -- "28"
"25" -- "28"
"17" -- "28"
"18" -- "28"
"19" -- "28"
"20" -- "28"
"21" -- "28"
"22" -- "28"
"23" -- "28"
"13" -- "28"
"3" -- "24"
"3" -- "25"
"3" -- "19"
"3" -- "20"
"3" -- "21"
"3" -- "22"
"3" -- "23"
"4" -- "24"
"4" -- "25"
"4" -- "20"
"4" -- "21"
"4" -- "22"
"4" -- "23"
"5" -- "24"
"5" -- "25"
"5" -- "21"
"5" -- "22"
"5" -- "23"
"6" -- "24"
"6" -- "25"
"6" -- "22"
"6" -- "23"
"7" -- "24"
"7" -- "25"
"7" -- "23"
"8" -- "24"
"8" -- "25"
"9" -- "25"
/* Move related edges. */
"2" -- "17" [style=dashed]
"3" -- "18" [style=dashed]
"4" -- "19" [style=dashed]
"5" -- "20" [style=dashed]
"6" -- "21" [style=dashed]
"7" -- "22" [style=dashed]
"8" -- "23" [style=dashed]
"9" -- "24" [style=dashed]
"10" -- "25" [style=dashed]
}](../../_images/graphviz-b65dfd0fd1447fff86b625cc1c6f8853fa78df58.png)
ors.main._main.interference.gv