Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
peephole
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Taddeüs Kroes
peephole
Commits
405dc7a5
Commit
405dc7a5
authored
Dec 29, 2011
by
Richard Torenvliet
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:taddeus/peephole
parents
41528750
58c6acb7
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
405 additions
and
8505 deletions
+405
-8505
benchmarks/optimized/clinpack.s
benchmarks/optimized/clinpack.s
+0
-3740
benchmarks/optimized/slalom.s
benchmarks/optimized/slalom.s
+0
-4630
report/report.tex
report/report.tex
+34
-10
src/dataflow.py
src/dataflow.py
+80
-35
src/optimize/__init__.py
src/optimize/__init__.py
+4
-3
src/optimize/advanced.py
src/optimize/advanced.py
+118
-57
src/statement.py
src/statement.py
+91
-11
tests/test_dataflow.py
tests/test_dataflow.py
+49
-9
tests/test_optimize_advanced.py
tests/test_optimize_advanced.py
+27
-8
tests/test_statement.py
tests/test_statement.py
+2
-2
No files found.
benchmarks/optimized/clinpack.s
deleted
100644 → 0
View file @
41528750
.
file
1
"clinpack.c"
#
GNU
C
2
.7.2.3
[
AL
1
.1
,
MM
40
,
tma
0
.1
]
SimpleScalar
running
sstrix
compiled
by
GNU
C
#
Cc1
defaults
:
#
-
mgas
-
mgpOPT
#
Cc1
arguments
(-
G
value
=
8
,
Cpu
=
default
,
ISA
=
1
)
:
#
-
quiet
-
dumpbase
-
O0
-
o
gcc2_compiled
.:
__gnu_compiled_c
:
.
lcomm
aa
.2
,
320000
.
lcomm
a
.3
,
321600
.
lcomm
b
.4
,
1600
.
lcomm
x
.5
,
1600
.
lcomm
ipvt
.6
,
800
.
lcomm
n
.7
,
4
.
lcomm
i
.8
,
4
.
lcomm
ntimes
.9
,
4
.
lcomm
info
.10
,
4
.
lcomm
lda
.11
,
4
.
lcomm
ldaa
.12
,
4
.
lcomm
kflops
.13
,
4
.
rdata
.
align
2
$LC1
:
.
ascii
"Unrolled \000"
.
sdata
.
align
2
$LC2
:
.
ascii
"Double \000"
.
rdata
.
align
2
$LC3
:
.
ascii
"Precision Linpack\n\n\000"
.
align
2
$LC6
:
.
ascii
" norm. resid resid machep\000"
.
align
2
$LC7
:
.
ascii
" x[0]-1 x[n-1]-1\n\000"
.
align
2
$LC8
:
.
ascii
"%8.1f %16.8e%16.8e%16.8e%16.8e\n\000"
.
align
2
$LC9
:
.
ascii
" times are reported for matrices of order %5d\n\000"
.
align
2
$LC10
:
.
ascii
" dgefa dgesl total kflops unit\000"
.
align
2
$LC11
:
.
ascii
" ratio\n\000"
.
align
2
$LC14
:
.
ascii
" times for array with leading dimension of%5d\n\000"
.
align
2
$LC16
:
.
ascii
" times for array with leading dimension of%4d\n\000"
.
align
2
$LC17
:
.
ascii
" Precision %5d Kflops ; %d Reps \n\000"
.
sdata
.
align
3
$LC0
:
.
word
0x3126e979
#
0
.056000000000000001166
.
word
0x3facac08
.
align
3
$LC4
:
.
word
0x00000000
#
3
.
word
0x40080000
.
align
3
$LC5
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC12
:
.
word
0x00000000
#
1000
.
word
0x408f4000
.
align
3
$LC13
:
.
word
0x00000000
#
2000
.
word
0x409f4000
.
align
3
$LC15
:
.
word
0x00000000
#
0
.5
.
word
0x3fe00000
.
text
.
align
2
.
globl
main
.
rdata
.
align
2
$LC18
:
.
ascii
"%11.2f%11.2f%11.2f%11.0f%11.2f%11.2f\n\000"
.
text
.
align
2
.
globl
print_time
.
sdata
.
align
3
$LC19
:
.
word
0x00000000
#
32768
.
word
0x40e00000
.
align
3
$LC20
:
.
word
0x00000000
#
16384
.
word
0x40d00000
.
text
.
align
2
.
globl
matgen
.
sdata
.
align
3
$LC21
:
.
word
0x00000000
#
-
1
.
word
0xbff00000
.
text
.
align
2
.
globl
dgefa
.
align
2
.
globl
dgesl
.
align
2
.
globl
daxpy
.
align
2
.
globl
ddot
.
align
2
.
globl
dscal
.
align
2
.
globl
idamax
.
sdata
.
align
3
$LC22
:
.
word
0x55555555
#
1
.3333333333333332593
.
word
0x3ff55555
.
align
3
$LC23
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
text
.
align
2
.
globl
epslon
.
align
2
.
globl
dmxpy
.
sdata
.
align
3
$LC24
:
.
word
0xa0b5ed8d
#
9
.9999999999999995475e-07
.
word
0x3eb0c6f7
.
text
.
align
2
.
globl
dtime
.
lcomm
st
,
384
.
comm
rusage
,
72
.
text
.
loc
1
72
.
ent
main
main
:
.
frame
$fp
,
168
,
$
31
#
vars
=
96
,
regs
=
2
/
2
,
args
=
48
,
extra
=
0
.
mask
0xc0000000
,-
20
.
fmask
0x00f00000
,-
4
subu
$sp
,
$sp
,
168
sw
$
31
,
148
(
$sp
)
sw
$fp
,
144
(
$sp
)
s.d
$f22
,
160
(
$sp
)
s.d
$f20
,
152
(
$sp
)
move
$fp
,
$sp
jal
__main
li
$
2
,
0x000000c9
#
201
sw
$
2
,
lda
.11
li
$
2
,
0x000000c8
#
200
sw
$
2
,
ldaa
.12
l.d
$f0
,
$LC0
s.d
$f0
,
48
(
$fp
)
li
$
2
,
0x00000019
#
25
sw
$
2
,
n
.7
la
$
4
,
$LC1
jal
printf
la
$
4
,
$LC2
jal
printf
la
$
4
,
$LC3
jal
printf
lw
$
2
,
n
.7
lw
$
3
,
n
.7
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
n
.7
mult
$
2
,
$
3
mflo
$
2
mtc1
$
2
,
$f20
#
nop
cvt.d.w
$f20
,
$f20
add.d
$f0
,
$f20
,
$f20
l.d
$f2
,
$LC4
div.d
$f0
,
$f0
,
$f2
lw
$
2
,
n
.7
lw
$
3
,
n
.7
mult
$
2
,
$
3
mflo
$
2
mtc1
$
2
,
$f22
#
nop
cvt.d.w
$f22
,
$f22
add.d
$f2
,
$f22
,
$f22
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
56
(
$fp
)
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
48
l.d
$f0
,
st
l.d
$f2
,
st
+
48
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
sw
$
0
,
i
.8
$L2
:
lw
$
2
,
i
.8
lw
$
3
,
n
.7
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L5
j
$L3
$L5
:
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
x
.5
addu
$
2
,
$
2
,
$
3
lw
$
3
,
i
.8
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
b
.4
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
$L4
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L2
$L3
:
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
sw
$
0
,
i
.8
$L6
:
lw
$
2
,
i
.8
lw
$
3
,
n
.7
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L9
j
$L7
$L9
:
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
b
.4
addu
$
2
,
$
2
,
$
3
lw
$
3
,
i
.8
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
b
.4
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
neg.d
$f2
,
$f0
s.d
$f2
,
0
(
$
2
)
$L8
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L6
$L7
:
la
$
2
,
x
.5
sw
$
2
,
16
(
$sp
)
la
$
2
,
a
.3
sw
$
2
,
20
(
$sp
)
lw
$
4
,
n
.7
la
$
5
,
b
.4
lw
$
6
,
n
.7
lw
$
7
,
lda
.11
jal
dmxpy
dsz
88
(
$fp
)
dsz
80
(
$fp
)
sw
$
0
,
i
.8
$L10
:
lw
$
2
,
i
.8
lw
$
3
,
n
.7
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L13
j
$L11
$L13
:
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
b
.4
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
88
(
$fp
)
c.lt.d
$f0
,
$f2
bc1f
$L14
l.d
$f0
,
88
(
$fp
)
j
$L15
$L14
:
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
b
.4
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
$L15
:
s.d
$f0
,
88
(
$fp
)
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
x
.5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
80
(
$fp
)
c.lt.d
$f0
,
$f2
bc1f
$L16
l.d
$f0
,
80
(
$fp
)
j
$L17
$L16
:
lw
$
2
,
i
.8
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
x
.5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
$L17
:
s.d
$f0
,
80
(
$fp
)
$L12
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L10
$L11
:
l.d
$f12
,
$LC5
jal
epslon
s.d
$f0
,
104
(
$fp
)
l.s
$f0
,
n
.7
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
72
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
80
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
104
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
88
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
96
(
$fp
)
la
$
4
,
$LC6
jal
printf
la
$
4
,
$LC7
jal
printf
l.d
$f0
,
88
(
$fp
)
s.d
$f0
,
16
(
$sp
)
l.d
$f0
,
104
(
$fp
)
s.d
$f0
,
24
(
$sp
)
l.d
$f0
,
x
.5
l.d
$f2
,
$LC5
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
32
(
$sp
)
lw
$
2
,
n
.7
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
$LC5
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
40
(
$sp
)
la
$
4
,
$LC8
dlw
$
6
,
96
(
$fp
)
jal
printf
la
$
4
,
$LC9
lw
$
5
,
n
.7
jal
printf
la
$
4
,
$LC10
jal
printf
la
$
4
,
$LC11
jal
printf
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
96
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
144
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
144
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
192
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
240
la
$
4
,
$LC14
lw
$
5
,
lda
.11
jal
printf
move
$
4
,
$
0
jal
print_time
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
8
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
56
l.d
$f0
,
st
+
8
l.d
$f2
,
st
+
56
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
104
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
152
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
152
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
200
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
248
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
16
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
64
l.d
$f0
,
st
+
16
l.d
$f2
,
st
+
64
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
112
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
160
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
160
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
208
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
256
li
$
2
,
0x00000001
#
1
sw
$
2
,
ntimes
.9
dsz
136
(
$fp
)
jal
dtime
s.d
$f0
,
120
(
$fp
)
sw
$
0
,
i
.8
$L18
:
lw
$
2
,
i
.8
lw
$
3
,
ntimes
.9
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L21
j
$L19
$L21
:
jal
dtime
s.d
$f0
,
128
(
$fp
)
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
l.d
$f2
,
136
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
128
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
136
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
$L20
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L18
$L19
:
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.d
$f2
,
136
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.s
$f2
,
ntimes
.9
#
nop
cvt.d.w
$f2
,
$f2
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
24
jal
dtime
s.d
$f0
,
120
(
$fp
)
sw
$
0
,
i
.8
$L22
:
lw
$
2
,
i
.8
lw
$
3
,
ntimes
.9
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L25
j
$L23
$L25
:
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
a
.3
lw
$
5
,
lda
.11
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
$L24
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L22
$L23
:
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.s
$f2
,
ntimes
.9
#
nop
cvt.d.w
$f2
,
$f2
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
72
l.d
$f0
,
st
+
24
l.d
$f2
,
st
+
72
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
120
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
168
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
168
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
216
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
264
li
$
4
,
0x00000001
#
1
jal
print_time
li
$
4
,
0x00000002
#
2
jal
print_time
li
$
4
,
0x00000003
#
3
jal
print_time
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
32
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
80
l.d
$f0
,
st
+
32
l.d
$f2
,
st
+
80
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
128
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
176
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
176
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
224
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
272
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
40
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
88
l.d
$f0
,
st
+
40
l.d
$f2
,
st
+
88
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
136
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
184
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
184
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
232
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
280
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
48
jal
dtime
s.d
$f0
,
120
(
$fp
)
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
96
l.d
$f0
,
st
+
48
l.d
$f2
,
st
+
96
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
144
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
192
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
192
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
240
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
288
li
$
2
,
0x00000001
#
1
sw
$
2
,
ntimes
.9
dsz
136
(
$fp
)
jal
dtime
s.d
$f0
,
120
(
$fp
)
sw
$
0
,
i
.8
$L26
:
lw
$
2
,
i
.8
lw
$
3
,
ntimes
.9
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L29
j
$L27
$L29
:
jal
dtime
s.d
$f0
,
128
(
$fp
)
addu
$
2
,
$fp
,
72
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
b
.4
jal
matgen
jal
dtime
l.d
$f2
,
136
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
128
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
136
(
$fp
)
la
$
2
,
info
.10
sw
$
2
,
16
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgefa
$L28
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L26
$L27
:
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.d
$f2
,
136
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.s
$f2
,
ntimes
.9
#
nop
cvt.d.w
$f2
,
$f2
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
56
jal
dtime
s.d
$f0
,
120
(
$fp
)
sw
$
0
,
i
.8
$L30
:
lw
$
2
,
i
.8
lw
$
3
,
ntimes
.9
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L33
j
$L31
$L33
:
la
$
2
,
b
.4
sw
$
2
,
16
(
$sp
)
sw
$
0
,
20
(
$sp
)
la
$
4
,
aa
.2
lw
$
5
,
ldaa
.12
lw
$
6
,
n
.7
la
$
7
,
ipvt
.6
jal
dgesl
$L32
:
lw
$
3
,
i
.8
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
i
.8
j
$L30
$L31
:
jal
dtime
l.d
$f2
,
120
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
l.s
$f2
,
ntimes
.9
#
nop
cvt.d.w
$f2
,
$f2
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
104
l.d
$f0
,
st
+
56
l.d
$f2
,
st
+
104
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
st
+
152
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
$LC12
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
st
+
200
l.d
$f0
,
$LC13
l.d
$f2
,
st
+
200
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
248
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
st
+
296
l.d
$f0
,
st
+
168
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.lt.d
$f0
,
$f2
bc1f
$L34
dsz
st
+
168
$L34
:
l.d
$f0
,
st
+
200
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.lt.d
$f0
,
$f2
bc1f
$L35
dsz
st
+
200
$L35
:
l.d
$f0
,
st
+
168
s.d
$f0
,
112
(
$fp
)
l.d
$f0
,
st
+
200
l.d
$f2
,
st
+
168
c.lt.d
$f0
,
$f2
bc1f
$L36
l.d
$f0
,
st
+
200
s.d
$f0
,
112
(
$fp
)
$L36
:
l.d
$f0
,
112
(
$fp
)
l.d
$f2
,
$LC15
add.d
$f0
,
$f0
,
$f2
trunc.w.d
$f4
,
$f0
,
$
8
s.s
$f4
,
kflops
.13
la
$
4
,
$LC16
lw
$
5
,
ldaa
.12
jal
printf
li
$
4
,
0x00000004
#
4
jal
print_time
li
$
4
,
0x00000005
#
5
jal
print_time
li
$
4
,
0x00000006
#
6
jal
print_time
li
$
4
,
0x00000007
#
7
jal
print_time
la
$
4
,
$LC1
jal
printf
la
$
4
,
$LC2
jal
printf
la
$
4
,
$LC17
lw
$
5
,
kflops
.13
li
$
6
,
0x00000001
#
1
jal
printf
$L1
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
148
(
$sp
)
lw
$fp
,
144
(
$sp
)
l.d
$f22
,
160
(
$sp
)
l.d
$f20
,
152
(
$sp
)
addu
$sp
,
$sp
,
168
j
$
31
.
end
main
.
loc
1
300
.
ent
print_time
print_time
:
.
frame
$fp
,
64
,
$
31
#
vars
=
0
,
regs
=
2
/
0
,
args
=
56
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
64
sw
$
31
,
60
(
$sp
)
sw
$fp
,
56
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
64
(
$fp
)
lw
$
2
,
64
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
st
addu
$
2
,
$
2
,
$
3
lw
$
3
,
64
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
st
+
48
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
16
(
$sp
)
lw
$
3
,
64
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
st
+
96
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
24
(
$sp
)
lw
$
3
,
64
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
st
+
144
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
32
(
$sp
)
lw
$
3
,
64
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
st
+
192
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
40
(
$sp
)
lw
$
3
,
64
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
st
+
240
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
48
(
$sp
)
la
$
4
,
$LC18
dlw
$
6
,
0
(
$
2
)
jal
printf
$L37
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
60
(
$sp
)
lw
$fp
,
56
(
$sp
)
addu
$sp
,
$sp
,
64
j
$
31
.
end
print_time
.
loc
1
309
.
ent
matgen
matgen
:
.
frame
$fp
,
24
,
$
31
#
vars
=
16
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
24
sw
$fp
,
16
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
24
(
$fp
)
sw
$
5
,
28
(
$fp
)
sw
$
6
,
32
(
$fp
)
sw
$
7
,
36
(
$fp
)
li
$
2
,
0x0000052d
#
1325
sw
$
2
,
0
(
$fp
)
lw
$
2
,
40
(
$fp
)
dsz
0
(
$
2
)
sw
$
0
,
8
(
$fp
)
$L39
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L42
j
$L40
$L42
:
sw
$
0
,
4
(
$fp
)
$L43
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L46
j
$L44
$L46
:
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
2
,
$
4
,
1
addu
$
2
,
$
2
,
$
3
sll
$
4
,
$
2
,
6
addu
$
2
,
$
2
,
$
4
sll
$
4
,
$
2
,
2
addu
$
4
,
$
4
,
$
3
sll
$
2
,
$
4
,
2
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
bgez
$
3
,
$L47
li
$
4
,
0x0000ffff
#
65535
addu
$
3
,
$
3
,
$
4
$L47
:
sra
$
3
,
$
3
,
16
move
$
4
,
$
3
sll
$
3
,
$
4
,
16
subu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
lw
$
2
,
28
(
$fp
)
lw
$
3
,
8
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.s
$f0
,
0
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
$LC19
sub.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC20
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
40
(
$fp
)
lw
$
3
,
28
(
$fp
)
lw
$
4
,
8
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
4
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
24
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
40
(
$fp
)
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
c.lt.d
$f2
,
$f0
bc1f
$L48
lw
$
3
,
28
(
$fp
)
lw
$
4
,
8
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
4
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
24
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
j
$L49
$L48
:
lw
$
3
,
40
(
$fp
)
l.d
$f0
,
0
(
$
3
)
$L49
:
s.d
$f0
,
0
(
$
2
)
$L45
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L43
$L44
:
$L41
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L39
$L40
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
4
(
$fp
)
$L50
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L53
j
$L51
$L53
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
dsz
0
(
$
2
)
$L52
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L50
$L51
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
8
(
$fp
)
$L54
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L57
j
$L55
$L57
:
sw
$
0
,
4
(
$fp
)
$L58
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L61
j
$L59
$L61
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
36
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
28
(
$fp
)
lw
$
5
,
8
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
24
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L60
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L58
$L59
:
$L56
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L54
$L55
:
$L38
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
16
(
$sp
)
addu
$sp
,
$sp
,
24
j
$
31
.
end
matgen
.
loc
1
339
.
ent
dgefa
dgefa
:
.
frame
$fp
,
72
,
$
31
#
vars
=
32
,
regs
=
2
/
0
,
args
=
32
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
72
sw
$
31
,
68
(
$sp
)
sw
$fp
,
64
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
72
(
$fp
)
sw
$
5
,
76
(
$fp
)
sw
$
6
,
80
(
$fp
)
sw
$
7
,
84
(
$fp
)
lw
$
2
,
88
(
$fp
)
sw
$
0
,
0
(
$
2
)
lw
$
2
,
80
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
56
(
$fp
)
lw
$
2
,
56
(
$fp
)
bltz
$
2
,
$L63
sw
$
0
,
44
(
$fp
)
$L64
:
lw
$
2
,
44
(
$fp
)
lw
$
3
,
56
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L67
j
$L65
$L67
:
lw
$
2
,
44
(
$fp
)
addu
$
3
,
$
2
,
1
sw
$
3
,
48
(
$fp
)
lw
$
2
,
80
(
$fp
)
lw
$
3
,
44
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
76
(
$fp
)
lw
$
4
,
44
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
72
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
2
move
$
5
,
$
3
li
$
6
,
0x00000001
#
1
jal
idamax
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
52
(
$fp
)
lw
$
2
,
44
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
lw
$
3
,
84
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
52
(
$fp
)
sw
$
3
,
0
(
$
2
)
lw
$
2
,
76
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1t
$L68
lw
$
2
,
52
(
$fp
)
lw
$
3
,
44
(
$fp
)
beq
$
2
,
$
3
,
$L69
lw
$
2
,
76
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
32
(
$fp
)
lw
$
2
,
76
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
76
(
$fp
)
lw
$
4
,
44
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
72
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
76
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
s.d
$f0
,
0
(
$
2
)
$L69
:
lw
$
2
,
76
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
$LC21
l.d
$f2
,
0
(
$
2
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
32
(
$fp
)
lw
$
3
,
80
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
44
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
76
(
$fp
)
lw
$
4
,
44
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
3
,
72
(
$fp
)
addu
$
4
,
$
3
,
$
4
sw
$
4
,
16
(
$sp
)
li
$
3
,
0x00000001
#
1
sw
$
3
,
20
(
$sp
)
move
$
4
,
$
2
dlw
$
6
,
32
(
$fp
)
jal
dscal
lw
$
2
,
48
(
$fp
)
sw
$
2
,
40
(
$fp
)
$L70
:
lw
$
2
,
40
(
$fp
)
lw
$
3
,
80
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L73
j
$L71
$L73
:
lw
$
2
,
76
(
$fp
)
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
32
(
$fp
)
lw
$
2
,
52
(
$fp
)
lw
$
3
,
44
(
$fp
)
beq
$
2
,
$
3
,
$L74
lw
$
2
,
76
(
$fp
)
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
76
(
$fp
)
lw
$
4
,
40
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
72
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
76
(
$fp
)
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
s.d
$f0
,
0
(
$
2
)
$L74
:
lw
$
3
,
80
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
44
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
76
(
$fp
)
lw
$
4
,
44
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
3
,
72
(
$fp
)
addu
$
4
,
$
3
,
$
4
sw
$
4
,
16
(
$sp
)
li
$
3
,
0x00000001
#
1
sw
$
3
,
20
(
$sp
)
lw
$
3
,
76
(
$fp
)
lw
$
4
,
40
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
3
,
72
(
$fp
)
addu
$
4
,
$
3
,
$
4
sw
$
4
,
24
(
$sp
)
li
$
3
,
0x00000001
#
1
sw
$
3
,
28
(
$sp
)
move
$
4
,
$
2
dlw
$
6
,
32
(
$fp
)
jal
daxpy
$L72
:
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
40
(
$fp
)
j
$L70
$L71
:
j
$L75
$L68
:
lw
$
2
,
88
(
$fp
)
lw
$
3
,
44
(
$fp
)
sw
$
3
,
0
(
$
2
)
$L75
:
$L66
:
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
44
(
$fp
)
j
$L64
$L65
:
$L63
:
lw
$
2
,
80
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
lw
$
4
,
84
(
$fp
)
addu
$
3
,
$
2
,
$
4
subu
$
2
,
$
3
,
4
lw
$
3
,
80
(
$fp
)
subu
$
4
,
$
3
,
1
sw
$
4
,
0
(
$
2
)
lw
$
3
,
80
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
76
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
72
(
$fp
)
addu
$
2
,
$
2
,
$
3
subu
$
3
,
$
2
,
8
l.d
$f0
,
0
(
$
3
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1f
$L76
lw
$
2
,
88
(
$fp
)
lw
$
3
,
80
(
$fp
)
subu
$
4
,
$
3
,
1
sw
$
4
,
0
(
$
2
)
$L76
:
$L62
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
68
(
$sp
)
lw
$fp
,
64
(
$sp
)
addu
$sp
,
$sp
,
72
j
$
31
.
end
dgefa
.
loc
1
455
.
ent
dgesl
dgesl
:
.
frame
$fp
,
64
,
$
31
#
vars
=
24
,
regs
=
2
/
0
,
args
=
32
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
64
sw
$
31
,
60
(
$sp
)
sw
$fp
,
56
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
64
(
$fp
)
sw
$
5
,
68
(
$fp
)
sw
$
6
,
72
(
$fp
)
sw
$
7
,
76
(
$fp
)
lw
$
2
,
72
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
52
(
$fp
)
lw
$
2
,
84
(
$fp
)
bne
$
2
,
$
0
,
$L78
lw
$
2
,
52
(
$fp
)
blez
$
2
,
$L79
sw
$
0
,
40
(
$fp
)
$L80
:
lw
$
2
,
40
(
$fp
)
lw
$
3
,
52
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L83
j
$L81
$L83
:
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
lw
$
3
,
76
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
48
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
32
(
$fp
)
lw
$
2
,
48
(
$fp
)
lw
$
3
,
40
(
$fp
)
beq
$
2
,
$
3
,
$L84
lw
$
2
,
48
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
80
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
s.d
$f0
,
0
(
$
2
)
$L84
:
lw
$
3
,
72
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
40
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
68
(
$fp
)
lw
$
4
,
40
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
3
,
64
(
$fp
)
addu
$
4
,
$
3
,
$
4
sw
$
4
,
16
(
$sp
)
li
$
3
,
0x00000001
#
1
sw
$
3
,
20
(
$sp
)
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
3
,
80
(
$fp
)
addu
$
4
,
$
3
,
$
4
sw
$
4
,
24
(
$sp
)
li
$
3
,
0x00000001
#
1
sw
$
3
,
28
(
$sp
)
move
$
4
,
$
2
dlw
$
6
,
32
(
$fp
)
jal
daxpy
$L82
:
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
40
(
$fp
)
j
$L80
$L81
:
$L79
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
44
(
$fp
)
$L85
:
lw
$
2
,
44
(
$fp
)
lw
$
3
,
72
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L88
j
$L86
$L88
:
lw
$
3
,
72
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
44
(
$fp
)
subu
$
2
,
$
2
,
$
3
sw
$
2
,
40
(
$fp
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
80
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
68
(
$fp
)
lw
$
5
,
40
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
64
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
neg.d
$f2
,
$f0
s.d
$f2
,
32
(
$fp
)
lw
$
2
,
68
(
$fp
)
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
3
,
$
2
sw
$
2
,
16
(
$sp
)
li
$
2
,
0x00000001
#
1
sw
$
2
,
20
(
$sp
)
lw
$
2
,
80
(
$fp
)
sw
$
2
,
24
(
$sp
)
li
$
2
,
0x00000001
#
1
sw
$
2
,
28
(
$sp
)
lw
$
4
,
40
(
$fp
)
dlw
$
6
,
32
(
$fp
)
jal
daxpy
$L87
:
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
44
(
$fp
)
j
$L85
$L86
:
j
$L89
$L78
:
sw
$
0
,
40
(
$fp
)
$L90
:
lw
$
2
,
40
(
$fp
)
lw
$
3
,
72
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L93
j
$L91
$L93
:
lw
$
2
,
68
(
$fp
)
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
2
,
$
3
li
$
3
,
0x00000001
#
1
sw
$
3
,
16
(
$sp
)
lw
$
4
,
40
(
$fp
)
move
$
5
,
$
2
li
$
6
,
0x00000001
#
1
lw
$
7
,
80
(
$fp
)
jal
ddot
s.d
$f0
,
32
(
$fp
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
80
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
32
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
lw
$
3
,
68
(
$fp
)
lw
$
4
,
40
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
64
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L92
:
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
40
(
$fp
)
j
$L90
$L91
:
lw
$
2
,
52
(
$fp
)
blez
$
2
,
$L94
li
$
2
,
0x00000001
#
1
sw
$
2
,
44
(
$fp
)
$L95
:
lw
$
2
,
44
(
$fp
)
lw
$
3
,
52
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L98
j
$L96
$L98
:
lw
$
3
,
72
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
44
(
$fp
)
subu
$
2
,
$
2
,
$
3
sw
$
2
,
40
(
$fp
)
lw
$
3
,
72
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
40
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
68
(
$fp
)
lw
$
4
,
40
(
$fp
)
mult
$
3
,
$
4
mflo
$
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$
3
,
8
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
lw
$
4
,
40
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$
4
,
8
lw
$
4
,
80
(
$fp
)
addu
$
7
,
$
5
,
$
4
li
$
4
,
0x00000001
#
1
sw
$
4
,
16
(
$sp
)
move
$
4
,
$
2
move
$
5
,
$
3
li
$
6
,
0x00000001
#
1
jal
ddot
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
80
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
lw
$
3
,
76
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
48
(
$fp
)
lw
$
2
,
48
(
$fp
)
lw
$
3
,
40
(
$fp
)
beq
$
2
,
$
3
,
$L99
lw
$
2
,
48
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
32
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
40
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
80
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
80
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
s.d
$f0
,
0
(
$
2
)
$L99
:
$L97
:
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
44
(
$fp
)
j
$L95
$L96
:
$L94
:
$L89
:
$L77
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
60
(
$sp
)
lw
$fp
,
56
(
$sp
)
addu
$sp
,
$sp
,
64
j
$
31
.
end
dgesl
.
loc
1
585
.
ent
daxpy
daxpy
:
.
frame
$fp
,
32
,
$
31
#
vars
=
24
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
32
sw
$fp
,
24
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
32
(
$fp
)
dsw
$
6
,
40
(
$fp
)
lw
$
2
,
32
(
$fp
)
bgtz
$
2
,
$L101
j
$L100
$L101
:
l.d
$f0
,
40
(
$fp
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1f
$L102
j
$L100
$L102
:
lw
$
2
,
52
(
$fp
)
li
$
3
,
0x00000001
#
1
bne
$
2
,
$
3
,
$L104
lw
$
2
,
60
(
$fp
)
li
$
3
,
0x00000001
#
1
bne
$
2
,
$
3
,
$L104
j
$L103
$L104
:
li
$
2
,
0x00000001
#
1
sw
$
2
,
4
(
$fp
)
li
$
2
,
0x00000001
#
1
sw
$
2
,
8
(
$fp
)
lw
$
2
,
52
(
$fp
)
bgez
$
2
,
$L105
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
0
,
$
3
addu
$
3
,
$
2
,
1
lw
$
4
,
52
(
$fp
)
mult
$
3
,
$
4
mflo
$
2
addu
$
3
,
$
2
,
1
sw
$
3
,
4
(
$fp
)
$L105
:
lw
$
2
,
60
(
$fp
)
bgez
$
2
,
$L106
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
0
,
$
3
addu
$
3
,
$
2
,
1
lw
$
4
,
60
(
$fp
)
mult
$
3
,
$
4
mflo
$
2
addu
$
3
,
$
2
,
1
sw
$
3
,
8
(
$fp
)
$L106
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
0
(
$fp
)
$L107
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L110
j
$L108
$L110
:
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
56
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
4
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
4
(
$fp
)
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
4
(
$fp
)
lw
$
2
,
8
(
$fp
)
lw
$
3
,
60
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
8
(
$fp
)
$L109
:
lw
$
3
,
0
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
0
(
$fp
)
j
$L107
$L108
:
j
$L100
$L103
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
bgez
$
3
,
$L111
addu
$
3
,
$
3
,
3
$L111
:
sra
$
3
,
$
3
,
2
move
$
4
,
$
3
sll
$
3
,
$
4
,
2
subu
$
2
,
$
2
,
$
3
sw
$
2
,
12
(
$fp
)
lw
$
2
,
12
(
$fp
)
beq
$
2
,
$
0
,
$L112
sw
$
0
,
0
(
$fp
)
$L113
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
12
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L116
j
$L114
$L116
:
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
56
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L115
:
lw
$
3
,
0
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
0
(
$fp
)
j
$L113
$L114
:
lw
$
2
,
32
(
$fp
)
slt
$
3
,
$
2
,
4
bne
$
3
,
$
0
,
$L100
$L117
:
$L112
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
12
(
$fp
)
sw
$
2
,
0
(
$fp
)
$L118
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L121
j
$L119
$L121
:
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
56
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
8
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
56
(
$fp
)
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
8
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
8
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
16
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
56
(
$fp
)
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
16
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
16
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
56
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
24
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
56
(
$fp
)
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
24
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
48
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
24
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L120
:
lw
$
2
,
0
(
$fp
)
addu
$
3
,
$
2
,
4
sw
$
3
,
0
(
$fp
)
j
$L118
$L119
:
$L100
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
24
(
$sp
)
addu
$sp
,
$sp
,
32
j
$
31
.
end
daxpy
.
loc
1
641
.
ent
ddot
ddot
:
.
frame
$fp
,
40
,
$
31
#
vars
=
32
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
40
sw
$fp
,
32
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
40
(
$fp
)
sw
$
5
,
44
(
$fp
)
sw
$
6
,
48
(
$fp
)
sw
$
7
,
52
(
$fp
)
dsz
0
(
$fp
)
lw
$
2
,
40
(
$fp
)
bgtz
$
2
,
$L123
mtc1
$
0
,
$f0
mtc1
$
0
,
$f1
j
$L122
$L123
:
lw
$
2
,
48
(
$fp
)
li
$
3
,
0x00000001
#
1
bne
$
2
,
$
3
,
$L125
lw
$
2
,
56
(
$fp
)
li
$
3
,
0x00000001
#
1
bne
$
2
,
$
3
,
$L125
j
$L124
$L125
:
sw
$
0
,
12
(
$fp
)
sw
$
0
,
16
(
$fp
)
lw
$
2
,
48
(
$fp
)
bgez
$
2
,
$L126
lw
$
3
,
40
(
$fp
)
subu
$
2
,
$
0
,
$
3
addu
$
3
,
$
2
,
1
lw
$
2
,
48
(
$fp
)
mult
$
3
,
$
2
mflo
$
3
sw
$
3
,
12
(
$fp
)
$L126
:
lw
$
2
,
56
(
$fp
)
bgez
$
2
,
$L127
lw
$
3
,
40
(
$fp
)
subu
$
2
,
$
0
,
$
3
addu
$
3
,
$
2
,
1
lw
$
2
,
56
(
$fp
)
mult
$
3
,
$
2
mflo
$
3
sw
$
3
,
16
(
$fp
)
$L127
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
8
(
$fp
)
$L128
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
40
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L131
j
$L129
$L131
:
lw
$
2
,
12
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
16
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$fp
)
lw
$
2
,
12
(
$fp
)
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
12
(
$fp
)
lw
$
2
,
16
(
$fp
)
lw
$
3
,
56
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
16
(
$fp
)
$L130
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L128
$L129
:
l.d
$f0
,
0
(
$fp
)
j
$L122
$L124
:
lw
$
2
,
40
(
$fp
)
li
$
6
,
0x66666667
#
1717986919
mult
$
2
,
$
6
mfhi
$
5
mflo
$
4
srl
$
6
,
$
5
,
0
move
$
7
,
$
0
sra
$
3
,
$
6
,
1
sra
$
4
,
$
2
,
31
subu
$
3
,
$
3
,
$
4
move
$
5
,
$
3
sll
$
4
,
$
5
,
2
addu
$
4
,
$
4
,
$
3
subu
$
2
,
$
2
,
$
4
sw
$
2
,
20
(
$fp
)
lw
$
2
,
20
(
$fp
)
beq
$
2
,
$
0
,
$L132
sw
$
0
,
8
(
$fp
)
$L133
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
20
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L136
j
$L134
$L136
:
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$fp
)
$L135
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L133
$L134
:
lw
$
2
,
40
(
$fp
)
slt
$
3
,
$
2
,
5
beq
$
3
,
$
0
,
$L137
l.d
$f0
,
0
(
$fp
)
j
$L122
$L137
:
$L132
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
20
(
$fp
)
sw
$
2
,
8
(
$fp
)
$L138
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
40
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L141
j
$L139
$L141
:
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$fp
)
add.d
$f0
,
$f0
,
$f2
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
8
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
8
l.d
$f2
,
0
(
$
2
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
16
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
16
l.d
$f2
,
0
(
$
2
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
24
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
24
l.d
$f2
,
0
(
$
2
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
44
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
32
lw
$
3
,
8
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
52
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
32
l.d
$f2
,
0
(
$
2
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$fp
)
$L140
:
lw
$
2
,
8
(
$fp
)
addu
$
3
,
$
2
,
5
sw
$
3
,
8
(
$fp
)
j
$L138
$L139
:
l.d
$f0
,
0
(
$fp
)
j
$L122
$L122
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
32
(
$sp
)
addu
$sp
,
$sp
,
40
j
$
31
.
end
ddot
.
loc
1
699
.
ent
dscal
dscal
:
.
frame
$fp
,
24
,
$
31
#
vars
=
16
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
24
sw
$fp
,
16
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
24
(
$fp
)
dsw
$
6
,
32
(
$fp
)
lw
$
2
,
24
(
$fp
)
bgtz
$
2
,
$L143
j
$L142
$L143
:
lw
$
2
,
44
(
$fp
)
li
$
3
,
0x00000001
#
1
beq
$
2
,
$
3
,
$L144
lw
$
2
,
24
(
$fp
)
lw
$
3
,
44
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
sw
$
2
,
12
(
$fp
)
sw
$
0
,
0
(
$fp
)
$L145
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
12
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L148
j
$L146
$L148
:
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L147
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
44
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
j
$L145
$L146
:
j
$L142
$L144
:
lw
$
2
,
24
(
$fp
)
li
$
6
,
0x66666667
#
1717986919
mult
$
2
,
$
6
mfhi
$
5
mflo
$
4
srl
$
6
,
$
5
,
0
move
$
7
,
$
0
sra
$
3
,
$
6
,
1
sra
$
4
,
$
2
,
31
subu
$
3
,
$
3
,
$
4
move
$
5
,
$
3
sll
$
4
,
$
5
,
2
addu
$
4
,
$
4
,
$
3
subu
$
2
,
$
2
,
$
4
sw
$
2
,
4
(
$fp
)
lw
$
2
,
4
(
$fp
)
beq
$
2
,
$
0
,
$L149
sw
$
0
,
0
(
$fp
)
$L150
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
4
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L153
j
$L151
$L153
:
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L152
:
lw
$
3
,
0
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
0
(
$fp
)
j
$L150
$L151
:
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
5
bne
$
3
,
$
0
,
$L142
$L154
:
$L149
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
4
(
$fp
)
sw
$
2
,
0
(
$fp
)
$L155
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L158
j
$L156
$L158
:
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
8
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
8
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
16
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
16
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
24
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
24
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
0
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
32
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
32
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L157
:
lw
$
2
,
0
(
$fp
)
addu
$
3
,
$
2
,
5
sw
$
3
,
0
(
$fp
)
j
$L155
$L156
:
$L142
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
16
(
$sp
)
addu
$sp
,
$sp
,
24
j
$
31
.
end
dscal
.
loc
1
748
.
ent
idamax
idamax
:
.
frame
$fp
,
32
,
$
31
#
vars
=
24
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
32
sw
$fp
,
24
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
32
(
$fp
)
sw
$
5
,
36
(
$fp
)
sw
$
6
,
40
(
$fp
)
lw
$
2
,
32
(
$fp
)
bgtz
$
2
,
$L160
li
$
2
,-
1
#
0xffffffff
j
$L159
$L160
:
lw
$
2
,
32
(
$fp
)
li
$
3
,
0x00000001
#
1
bne
$
2
,
$
3
,
$L161
move
$
2
,
$
0
j
$L159
$L161
:
lw
$
2
,
40
(
$fp
)
li
$
3
,
0x00000001
#
1
beq
$
2
,
$
3
,
$L162
li
$
2
,
0x00000001
#
1
sw
$
2
,
12
(
$fp
)
lw
$
2
,
36
(
$fp
)
l.d
$f0
,
0
(
$
2
)
abs.d
$f2
,
$f0
s.d
$f2
,
0
(
$fp
)
lw
$
2
,
12
(
$fp
)
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
12
(
$fp
)
li
$
2
,
0x00000001
#
1
sw
$
2
,
8
(
$fp
)
$L163
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L166
j
$L164
$L166
:
lw
$
2
,
12
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
0
(
$fp
)
c.lt.d
$f2
,
$f0
bc1f
$L167
lw
$
2
,
8
(
$fp
)
sw
$
2
,
16
(
$fp
)
lw
$
2
,
12
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
abs.d
$f2
,
$f0
s.d
$f2
,
0
(
$fp
)
$L167
:
lw
$
2
,
12
(
$fp
)
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
12
(
$fp
)
$L165
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L163
$L164
:
j
$L168
$L162
:
sw
$
0
,
16
(
$fp
)
lw
$
2
,
36
(
$fp
)
l.d
$f0
,
0
(
$
2
)
abs.d
$f2
,
$f0
s.d
$f2
,
0
(
$fp
)
li
$
2
,
0x00000001
#
1
sw
$
2
,
8
(
$fp
)
$L169
:
lw
$
2
,
8
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L172
j
$L170
$L172
:
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
0
(
$fp
)
c.lt.d
$f2
,
$f0
bc1f
$L173
lw
$
2
,
8
(
$fp
)
sw
$
2
,
16
(
$fp
)
lw
$
2
,
8
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
abs.d
$f2
,
$f0
s.d
$f2
,
0
(
$fp
)
$L173
:
$L171
:
lw
$
3
,
8
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
8
(
$fp
)
j
$L169
$L170
:
$L168
:
lw
$
2
,
16
(
$fp
)
j
$L159
$L159
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
24
(
$sp
)
addu
$sp
,
$sp
,
32
j
$
31
.
end
idamax
.
loc
1
789
.
ent
epslon
epslon
:
.
frame
$fp
,
40
,
$
31
#
vars
=
32
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
40
sw
$fp
,
32
(
$sp
)
move
$fp
,
$sp
s.d
$f12
,
40
(
$fp
)
l.d
$f0
,
$LC22
s.d
$f0
,
0
(
$fp
)
dsz
24
(
$fp
)
$L175
:
l.d
$f0
,
24
(
$fp
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1t
$L177
j
$L176
$L177
:
l.d
$f0
,
0
(
$fp
)
l.d
$f2
,
$LC23
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
8
(
$fp
)
l.d
$f0
,
8
(
$fp
)
l.d
$f2
,
8
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
8
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
16
(
$fp
)
l.d
$f0
,
16
(
$fp
)
l.d
$f2
,
$LC23
sub.d
$f0
,
$f0
,
$f2
abs.d
$f2
,
$f0
s.d
$f2
,
24
(
$fp
)
j
$L175
$L176
:
l.d
$f2
,
40
(
$fp
)
abs.d
$f0
,
$f2
l.d
$f4
,
24
(
$fp
)
mul.d
$f2
,
$f0
,
$f4
mov.d
$f0
,
$f2
j
$L174
$L174
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
32
(
$sp
)
addu
$sp
,
$sp
,
40
j
$
31
.
end
epslon
.
loc
1
836
.
ent
dmxpy
dmxpy
:
.
frame
$fp
,
24
,
$
31
#
vars
=
16
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
24
sw
$fp
,
16
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
24
(
$fp
)
sw
$
5
,
28
(
$fp
)
sw
$
6
,
32
(
$fp
)
sw
$
7
,
36
(
$fp
)
lw
$
2
,
32
(
$fp
)
sra
$
3
,
$
2
,
31
srl
$
4
,
$
3
,
31
addu
$
5
,
$
2
,
$
4
sra
$
3
,
$
5
,
1
move
$
4
,
$
3
sll
$
3
,
$
4
,
1
subu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
lw
$
2
,
0
(
$fp
)
blez
$
2
,
$L179
lw
$
2
,
0
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
0
(
$fp
)
sw
$
0
,
4
(
$fp
)
$L180
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L183
j
$L181
$L183
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
28
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
4
,
$
5
lw
$
5
,
36
(
$fp
)
lw
$
6
,
0
(
$fp
)
mult
$
5
,
$
6
mflo
$
5
lw
$
6
,
4
(
$fp
)
addu
$
5
,
$
5
,
$
6
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
lw
$
6
,
44
(
$fp
)
addu
$
5
,
$
5
,
$
6
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L182
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L180
$L181
:
$L179
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
bgez
$
3
,
$L184
addu
$
3
,
$
3
,
3
$L184
:
sra
$
3
,
$
3
,
2
move
$
4
,
$
3
sll
$
3
,
$
4
,
2
subu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
lw
$
2
,
0
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L185
lw
$
2
,
0
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
0
(
$fp
)
sw
$
0
,
4
(
$fp
)
$L186
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L189
j
$L187
$L189
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
28
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
6
,
40
(
$fp
)
addu
$
5
,
$
4
,
$
6
subu
$
4
,
$
5
,
8
lw
$
6
,
0
(
$fp
)
subu
$
5
,
$
6
,
1
lw
$
6
,
36
(
$fp
)
mult
$
5
,
$
6
mflo
$
5
lw
$
6
,
4
(
$fp
)
addu
$
5
,
$
5
,
$
6
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
lw
$
6
,
44
(
$fp
)
addu
$
5
,
$
5
,
$
6
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
36
(
$fp
)
lw
$
5
,
0
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L188
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L186
$L187
:
$L185
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
bgez
$
3
,
$L190
addu
$
3
,
$
3
,
7
$L190
:
sra
$
3
,
$
3
,
3
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
subu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
lw
$
2
,
0
(
$fp
)
slt
$
3
,
$
2
,
4
bne
$
3
,
$
0
,
$L191
lw
$
2
,
0
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
0
(
$fp
)
sw
$
0
,
4
(
$fp
)
$L192
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L195
j
$L193
$L195
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
28
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
6
,
40
(
$fp
)
addu
$
5
,
$
4
,
$
6
subu
$
4
,
$
5
,
24
lw
$
6
,
0
(
$fp
)
subu
$
5
,
$
6
,
3
lw
$
6
,
36
(
$fp
)
mult
$
5
,
$
6
mflo
$
5
lw
$
6
,
4
(
$fp
)
addu
$
5
,
$
5
,
$
6
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
lw
$
6
,
44
(
$fp
)
addu
$
5
,
$
5
,
$
6
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
16
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
2
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
8
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
1
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
36
(
$fp
)
lw
$
5
,
0
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L194
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L192
$L193
:
$L191
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
bgez
$
3
,
$L196
addu
$
3
,
$
3
,
15
$L196
:
sra
$
3
,
$
3
,
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
4
subu
$
2
,
$
2
,
$
3
sw
$
2
,
0
(
$fp
)
lw
$
2
,
0
(
$fp
)
slt
$
3
,
$
2
,
8
bne
$
3
,
$
0
,
$L197
lw
$
2
,
0
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
0
(
$fp
)
sw
$
0
,
4
(
$fp
)
$L198
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L201
j
$L199
$L201
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
28
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
6
,
40
(
$fp
)
addu
$
5
,
$
4
,
$
6
subu
$
4
,
$
5
,
56
lw
$
6
,
0
(
$fp
)
subu
$
5
,
$
6
,
7
lw
$
6
,
36
(
$fp
)
mult
$
5
,
$
6
mflo
$
5
lw
$
6
,
4
(
$fp
)
addu
$
5
,
$
5
,
$
6
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
lw
$
6
,
44
(
$fp
)
addu
$
5
,
$
5
,
$
6
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
48
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
6
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
40
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
5
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
32
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
4
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
24
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
3
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
16
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
2
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
8
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
1
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
36
(
$fp
)
lw
$
5
,
0
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L200
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L198
$L199
:
$L197
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
bgez
$
3
,
$L202
addu
$
3
,
$
3
,
15
$L202
:
sra
$
3
,
$
3
,
4
move
$
4
,
$
3
sll
$
3
,
$
4
,
4
subu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
16
sw
$
3
,
8
(
$fp
)
lw
$
2
,
8
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
0
(
$fp
)
$L203
:
lw
$
2
,
0
(
$fp
)
lw
$
3
,
32
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L206
j
$L204
$L206
:
sw
$
0
,
4
(
$fp
)
$L207
:
lw
$
2
,
4
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L210
j
$L208
$L210
:
lw
$
2
,
4
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
4
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
28
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
6
,
40
(
$fp
)
addu
$
5
,
$
4
,
$
6
subu
$
4
,
$
5
,
120
lw
$
6
,
0
(
$fp
)
subu
$
5
,
$
6
,
15
lw
$
6
,
36
(
$fp
)
mult
$
5
,
$
6
mflo
$
5
lw
$
6
,
4
(
$fp
)
addu
$
5
,
$
5
,
$
6
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
lw
$
6
,
44
(
$fp
)
addu
$
5
,
$
5
,
$
6
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
112
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
14
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
104
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
13
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
96
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
12
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
88
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
11
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
80
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
10
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
72
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
9
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
64
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
8
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
56
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
7
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
48
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
6
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
40
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
5
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
32
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
4
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
24
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
3
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
16
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
2
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
5
,
40
(
$fp
)
addu
$
4
,
$
3
,
$
5
subu
$
3
,
$
4
,
8
lw
$
5
,
0
(
$fp
)
subu
$
4
,
$
5
,
1
lw
$
5
,
36
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
0
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
40
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
36
(
$fp
)
lw
$
5
,
0
(
$fp
)
mult
$
4
,
$
5
mflo
$
4
lw
$
5
,
4
(
$fp
)
addu
$
4
,
$
4
,
$
5
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
44
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f2
,
0
(
$
3
)
l.d
$f4
,
0
(
$
4
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L209
:
lw
$
3
,
4
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
4
(
$fp
)
j
$L207
$L208
:
$L205
:
lw
$
2
,
0
(
$fp
)
addu
$
3
,
$
2
,
16
sw
$
3
,
0
(
$fp
)
j
$L203
$L204
:
$L178
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
16
(
$sp
)
addu
$sp
,
$sp
,
24
j
$
31
.
end
dmxpy
.
loc
1
995
.
ent
dtime
dtime
:
.
frame
$fp
,
32
,
$
31
#
vars
=
8
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
32
sw
$
31
,
28
(
$sp
)
sw
$fp
,
24
(
$sp
)
move
$fp
,
$sp
move
$
4
,
$
0
la
$
5
,
rusage
jal
getrusage
l.s
$f0
,
rusage
#
nop
cvt.d.w
$f0
,
$f0
s.d
$f0
,
16
(
$fp
)
l.s
$f0
,
rusage
+
4
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
$LC24
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
16
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
16
(
$fp
)
l.d
$f0
,
16
(
$fp
)
j
$L211
$L211
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
28
(
$sp
)
lw
$fp
,
24
(
$sp
)
addu
$sp
,
$sp
,
32
j
$
31
.
end
dtime
\ No newline at end of file
benchmarks/optimized/slalom.s
deleted
100644 → 0
View file @
41528750
.
file
1
"slalom.c"
#
GNU
C
2
.7.2.3
[
AL
1
.1
,
MM
40
,
tma
0
.1
]
SimpleScalar
running
sstrix
compiled
by
GNU
C
#
Cc1
defaults
:
#
-
mgas
-
mgpOPT
#
Cc1
arguments
(-
G
value
=
8
,
Cpu
=
default
,
ISA
=
1
)
:
#
-
quiet
-
dumpbase
-
O0
-
o
gcc2_compiled
.:
__gnu_compiled_c
:
.
rdata
.
align
2
$LC0
:
.
ascii
"Enter the number of seconds that is the goal: \000"
.
sdata
.
align
2
$LC1
:
.
ascii
"%lg\000"
.
rdata
.
align
2
$LC2
:
.
ascii
"Enter a lower bound for n: \000"
.
sdata
.
align
2
$LC3
:
.
ascii
"%d\000"
.
rdata
.
align
2
$LC4
:
.
ascii
"Must take less than %g seconds. Took %g.\n\000"
.
align
2
$LC5
:
.
ascii
"Enter an upper bound for n: \000"
.
align
2
$LC6
:
.
ascii
"Must take at least %g seconds. Took %g.\n\000"
.
align
2
$LC7
:
.
ascii
"New interval: [%d,%d]\n\000"
.
text
.
align
2
.
globl
main
.
data
.
align
2
info
.
4
:
.
word
$LC8
.
word
$LC9
.
word
$LC10
.
word
$LC11
.
word
$LC12
.
word
$LC13
.
word
$LC14
.
word
$LC15
.
word
$LC16
.
word
0
.
rdata
.
align
2
$LC16
:
.
ascii
"Options: -O Date: 23 May 1990\000"
.
align
2
$LC15
:
.
ascii
"Compiler: cc Run by: M. Carter\000"
.
align
2
$LC14
:
.
ascii
"Language: C Alone: yes\000"
.
align
2
$LC13
:
.
ascii
"OS: SUNOS 4.0.3 Timer: Wall, gettime"
.
ascii
"ofday()\000"
.
align
2
$LC12
:
.
ascii
"Disk: .3GB SCSI+.7GB SMD Node name: amssun2\000"
.
align
2
$LC11
:
.
ascii
"NMAX: 512 Clock: 25 MHz\000"
.
align
2
$LC10
:
.
ascii
"Cache: 128 KB # used: 1\000"
.
align
2
$LC9
:
.
ascii
"Memory: 32 MB # of procs: 1\000"
.
align
2
$LC8
:
.
ascii
"Machine: SUN 4/370GX Processor: SPARC\000"
.
sdata
.
align
2
$LC17
:
.
ascii
"\n\000"
.
rdata
.
align
2
$LC18
:
.
ascii
"M ops: %-13lg Time: %-.3lf seconds\n\000"
.
align
2
$LC20
:
.
ascii
"n: %-6d MFLOPS: %-.5lg\n\000"
.
align
2
$LC21
:
.
ascii
"Approximate data memory use: %d bytes.\n\000"
.
sdata
.
align
3
$LC19
:
.
word
0xa0b5ed8d
#
9
.9999999999999995475e-07
.
word
0x3eb0c6f7
.
text
.
align
2
.
globl
What
.
lcomm
area
.7
,
16384
.
lcomm
box
.8
,
56
.
lcomm
coeff
.9
,
33554432
.
lcomm
diag
.10
,
49152
.
lcomm
emiss
.11
,
144
.
lcomm
place
.12
,
49152
.
lcomm
result
.13
,
49152
.
lcomm
rho
.14
,
144
.
lcomm
rhs
.15
,
49152
.
lcomm
size
.16
,
32768
.
lcomm
loop
.17
,
48
.
data
.
align
2
tasks
.
18
:
.
word
$LC22
.
word
$LC23
.
word
$LC24
.
word
$LC25
.
word
$LC26
.
word
$LC27
.
word
$LC28
.
sdata
.
align
2
$LC28
:
.
ascii
"Storer\000"
.
align
2
$LC27
:
.
ascii
"Solver\000"
.
align
2
$LC26
:
.
ascii
"SetUp3\000"
.
align
2
$LC25
:
.
ascii
"SetUp2\000"
.
align
2
$LC24
:
.
ascii
"SetUp1\000"
.
align
2
$LC23
:
.
ascii
"Region\000"
.
align
2
$LC22
:
.
ascii
"Reader\000"
.
rdata
.
align
2
$LC29
:
.
ascii
"%6.6s%8.3f%17.0f%14.6f%10.1f %%\n\000"
.
sdata
.
align
2
format
.
19
:
.
word
$LC29
.
rdata
.
align
2
$LC30
:
.
ascii
"Must be at least 6, the number of faces.\n\000"
.
align
2
$LC31
:
.
ascii
"Exceeds %d = maximum for this system.\n\000"
.
sdata
.
align
2
$LC32
:
.
ascii
"answer\000"
.
rdata
.
align
2
$LC50
:
.
ascii
"%d patches:\n\000"
.
align
2
$LC51
:
.
ascii
" Task Seconds Operations MFLOPS %% of T"
.
ascii
"ime\n\000"
.
sdata
.
align
2
$LC55
:
.
ascii
"TOTALS\000"
.
align
3
$LC33
:
.
word
0x00000000
#
0
.5
.
word
0x3fe00000
.
align
3
$LC34
:
.
word
0x00000000
#
258
.
word
0x40702000
.
align
3
$LC35
:
.
word
0x00000000
#
8
.
word
0x40200000
.
align
3
$LC36
:
.
word
0x00000000
#
154
.
word
0x40634000
.
align
3
$LC37
:
.
word
0x00000000
#
532
.
word
0x4080a000
.
align
3
$LC38
:
.
word
0x00000000
#
6
.
word
0x40180000
.
align
3
$LC39
:
.
word
0x00000000
#
370
.
word
0x40772000
.
align
3
$LC40
:
.
word
0x00000000
#
2
.
word
0x40000000
.
align
3
$LC41
:
.
word
0x00000000
#
9
.
word
0x40220000
.
align
3
$LC42
:
.
word
0x00000000
#
72
.
word
0x40520000
.
align
3
$LC43
:
.
word
0x00000000
#
7
.5
.
word
0x401e0000
.
align
3
$LC44
:
.
word
0x00000000
#
2
.5
.
word
0x40040000
.
align
3
$LC45
:
.
word
0x00000000
#
21
.
word
0x40350000
.
align
3
$LC46
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC47
:
.
word
0x00000000
#
16
.5
.
word
0x40308000
.
align
3
$LC48
:
.
word
0x00000000
#
35
.5
.
word
0x4041c000
.
align
3
$LC49
:
.
word
0x00000000
#
3
.
word
0x40080000
.
align
3
$LC52
:
.
word
0xd2f1a9fc
#
0
.0010000000000000000208
.
word
0x3f50624d
.
align
3
$LC53
:
.
word
0xa0b5ed8d
#
9
.9999999999999995475e-07
.
word
0x3eb0c6f7
.
align
3
$LC54
:
.
word
0x00000000
#
100
.
word
0x40590000
.
text
.
align
2
.
globl
Meter
.
sdata
.
align
3
$LC56
:
.
word
0xa0b5ed8d
#
9
.9999999999999995475e-07
.
word
0x3eb0c6f7
.
text
.
align
2
.
globl
When
.
sdata
.
align
2
$LC57
:
.
ascii
"geom\000"
.
align
2
$LC58
:
.
ascii
"r\000"
.
rdata
.
align
2
$LC59
:
.
ascii
"slalom: 'geom' geometry file not found.\n\000"
.
align
2
$LC60
:
.
ascii
"Must specify exactly 3 box coordinates.\n\000"
.
align
2
$LC61
:
.
ascii
"Must specify exactly 18 box coordinates.\n\000"
.
align
2
$LC64
:
.
ascii
"Box dimensions must be between 1 and 100.\n\000"
.
align
2
$LC66
:
.
ascii
"Reflectivities must be between .000 and .999.\n\000"
.
align
2
$LC67
:
.
ascii
"Emissivity cannot be negative.\n\000"
.
align
2
$LC68
:
.
ascii
"Emissivities are zero. Problem is trivial.\n\000"
.
sdata
.
align
3
$LC62
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC63
:
.
word
0x00000000
#
100
.
word
0x40590000
.
align
3
$LC65
:
.
word
0xd916872b
#
0
.99899999999999999911
.
word
0x3feff7ce
.
text
.
align
2
.
globl
Reader
.
rdata
.
align
2
$LC70
:
.
ascii
"Eccentric box requires more patches.\n\000"
.
sdata
.
align
3
$LC69
:
.
word
0x00000000
#
0
.5
.
word
0x3fe00000
.
align
3
$LC71
:
.
word
0x54442d18
#
25
.132741228718344928
.
word
0x403921fb
.
text
.
align
2
.
globl
Region
.
sdata
.
align
3
$LC72
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC73
:
.
word
0x00000000
#
-
4
.
word
0xc0100000
.
text
.
align
2
.
globl
SetUp1
.
sdata
.
align
3
$LC74
:
.
word
0xb7f87a0f
#
1
.0000000000000000079e-35
.
word
0x38aa95a5
.
align
3
$LC75
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC76
:
.
word
0x00000000
#
4
.
word
0x40100000
.
text
.
align
2
.
globl
SetUp2
.
rdata
.
align
2
$LC79
:
.
ascii
"Total form factor is too far from unity.\n\000"
.
sdata
.
align
3
$LC77
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
align
3
$LC78
:
.
word
0xe826d695
#
5
.0000000000000003114e-10
.
word
0x3e012e0b
.
text
.
align
2
.
globl
SetUp3
.
sdata
.
align
3
$LC80
:
.
word
0x00000000
#
1
.
word
0x3ff00000
.
text
.
align
2
.
globl
Solver
.
sdata
.
align
2
$LC81
:
.
ascii
"w\000"
.
rdata
.
align
2
$LC82
:
.
ascii
"Unable to open 'answer' file.\n\000"
.
align
2
$LC83
:
.
ascii
" Patch Face Position in w, h, d Widt"
.
ascii
"h Height\n\000"
.
align
2
$LC84
:
.
ascii
"%5d %4d%11.5lf%11.5lf%11.5lf %11.5lf%11.5lf\n\000"
.
align
2
$LC85
:
.
ascii
"\n"
.
ascii
" Patch Face Radiosities\n\000"
.
align
2
$LC86
:
.
ascii
"%5d %4d%12.8lf%12.8lf%12.8lf\n\000"
.
text
.
align
2
.
globl
Storer
.
rdata
.
align
2
$LC88
:
.
ascii
"Residual is too large: %lg\n\000"
.
sdata
.
align
3
$LC87
:
.
word
0x29a4692c
#
1
.5000000000000001968e-08
.
word
0x3e501b2b
.
text
.
align
2
.
globl
Verify
.
align
2
.
globl
Ddot
.
comm
goal
,
8
.
comm
timing
,
8
.
comm
work
,
8
.
comm
mean
,
4
.
comm
n
,
4
.
comm
nupper
,
4
.
text
.
loc
1
179
.
ent
main
main
:
.
frame
$fp
,
40
,
$
31
#
vars
=
8
,
regs
=
2
/
0
,
args
=
24
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
40
sw
$
31
,
36
(
$sp
)
sw
$fp
,
32
(
$sp
)
move
$fp
,
$sp
jal
__main
la
$
4
,
$LC0
jal
printf
la
$
4
,
$LC1
la
$
5
,
goal
jal
scanf
$L2
:
la
$
4
,
$LC2
jal
printf
la
$
4
,
$LC3
la
$
5
,
n
jal
scanf
lw
$
2
,
n
bgtz
$
2
,
$L5
move
$
4
,
$
0
jal
exit
$L5
:
lw
$
4
,
n
la
$
5
,
timing
la
$
6
,
work
jal
Meter
sw
$
2
,
24
(
$fp
)
l.d
$f0
,
timing
l.d
$f2
,
goal
c.le.d
$f2
,
$f0
bc1f
$L6
l.d
$f0
,
timing
s.d
$f0
,
16
(
$sp
)
la
$
4
,
$LC4
dlw
$
6
,
goal
jal
printf
$L6
:
$L4
:
lw
$
2
,
24
(
$fp
)
beq
$
2
,
$
0
,
$L7
l.d
$f0
,
timing
l.d
$f2
,
goal
c.le.d
$f2
,
$f0
bc1t
$L7
j
$L3
$L7
:
j
$L2
$L3
:
.
set
noreorder
nop
.
set
reorder
$L8
:
la
$
4
,
$LC5
jal
printf
la
$
4
,
$LC3
la
$
5
,
nupper
jal
scanf
lw
$
2
,
nupper
bgtz
$
2
,
$L11
move
$
4
,
$
0
jal
exit
$L11
:
lw
$
4
,
nupper
la
$
5
,
timing
la
$
6
,
work
jal
Meter
sw
$
2
,
24
(
$fp
)
l.d
$f0
,
timing
l.d
$f2
,
goal
c.lt.d
$f0
,
$f2
bc1f
$L12
l.d
$f0
,
timing
s.d
$f0
,
16
(
$sp
)
la
$
4
,
$LC6
dlw
$
6
,
goal
jal
printf
lw
$
2
,
nupper
lw
$
3
,
n
slt
$
4
,
$
2
,
$
3
beq
$
4
,
$
0
,
$L13
lw
$
2
,
n
$L13
:
sw
$
2
,
n
$L12
:
$L10
:
lw
$
2
,
24
(
$fp
)
beq
$
2
,
$
0
,
$L14
l.d
$f0
,
timing
l.d
$f2
,
goal
c.lt.d
$f0
,
$f2
bc1t
$L14
j
$L9
$L14
:
j
$L8
$L9
:
.
set
noreorder
nop
.
set
reorder
$L15
:
lw
$
2
,
nupper
lw
$
3
,
n
subu
$
2
,
$
2
,
$
3
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L16
$L17
:
lw
$
2
,
n
lw
$
3
,
nupper
addu
$
2
,
$
2
,
$
3
sra
$
3
,
$
2
,
31
srl
$
4
,
$
3
,
31
addu
$
2
,
$
2
,
$
4
sra
$
3
,
$
2
,
1
sw
$
3
,
mean
lw
$
4
,
mean
la
$
5
,
timing
la
$
6
,
work
jal
Meter
sw
$
2
,
24
(
$fp
)
l.d
$f0
,
timing
l.d
$f2
,
goal
c.lt.d
$f0
,
$f2
bc1f
$L18
lw
$
2
,
mean
sw
$
2
,
n
j
$L19
$L18
:
lw
$
2
,
mean
sw
$
2
,
nupper
$L19
:
la
$
4
,
$LC7
lw
$
5
,
n
lw
$
6
,
nupper
jal
printf
j
$L15
$L16
:
lw
$
4
,
n
la
$
5
,
timing
la
$
6
,
work
jal
Meter
sw
$
2
,
24
(
$fp
)
l.d
$f0
,
work
s.d
$f0
,
16
(
$sp
)
lw
$
4
,
n
dlw
$
6
,
timing
jal
What
$L1
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
36
(
$sp
)
lw
$fp
,
32
(
$sp
)
addu
$sp
,
$sp
,
40
j
$
31
.
end
main
.
loc
1
236
.
ent
What
What
:
.
frame
$fp
,
40
,
$
31
#
vars
=
8
,
regs
=
2
/
0
,
args
=
24
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
40
sw
$
31
,
36
(
$sp
)
sw
$fp
,
32
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
40
(
$fp
)
dsw
$
6
,
48
(
$fp
)
la
$
4
,
$LC17
jal
printf
sw
$
0
,
24
(
$fp
)
$L21
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
la
$
3
,
info
.4
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
bne
$
3
,
$
0
,
$L24
j
$L22
$L24
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
la
$
3
,
info
.4
addu
$
2
,
$
2
,
$
3
lw
$
4
,
0
(
$
2
)
jal
puts
$L23
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L21
$L22
:
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
$LC19
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
48
(
$fp
)
s.d
$f2
,
16
(
$sp
)
la
$
4
,
$LC18
dmfc1
$
6
,
$f0
jal
printf
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
48
(
$fp
)
div.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC19
mul.d
$f0
,
$f0
,
$f2
la
$
4
,
$LC20
lw
$
5
,
40
(
$fp
)
dmfc1
$
6
,
$f0
jal
printf
lw
$
2
,
40
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
40
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
lw
$
3
,
40
(
$fp
)
move
$
5
,
$
3
sll
$
4
,
$
5
,
4
subu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
800
la
$
4
,
$LC21
move
$
5
,
$
3
jal
printf
$L20
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
36
(
$sp
)
lw
$fp
,
32
(
$sp
)
addu
$sp
,
$sp
,
40
j
$
31
.
end
What
.
loc
1
282
.
ent
Meter
Meter
:
.
frame
$fp
,
280
,
$
31
#
vars
=
208
,
regs
=
2
/
3
,
args
=
40
,
extra
=
0
.
mask
0xc0000000
,-
28
.
fmask
0x03f00000
,-
4
subu
$sp
,
$sp
,
280
sw
$
31
,
252
(
$sp
)
sw
$fp
,
248
(
$sp
)
s.d
$f24
,
272
(
$sp
)
s.d
$f22
,
264
(
$sp
)
s.d
$f20
,
256
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
280
(
$fp
)
sw
$
5
,
284
(
$fp
)
sw
$
6
,
288
(
$fp
)
lw
$
2
,
280
(
$fp
)
slt
$
3
,
$
2
,
6
beq
$
3
,
$
0
,
$L26
la
$
4
,
$LC30
jal
printf
move
$
2
,
$
0
j
$L25
j
$L27
$L26
:
lw
$
2
,
280
(
$fp
)
slt
$
3
,
$
2
,
2049
bne
$
3
,
$
0
,
$L28
la
$
4
,
$LC31
li
$
5
,
0x00000800
#
2048
jal
printf
move
$
2
,
$
0
j
$L25
$L28
:
$L27
:
la
$
4
,
$LC32
jal
unlink
jal
When
s.d
$f0
,
152
(
$fp
)
la
$
4
,
box
.8
la
$
5
,
rho
.14
la
$
6
,
emiss
.11
jal
Reader
bne
$
2
,
$
0
,
$L29
move
$
2
,
$
0
j
$L25
$L29
:
jal
When
s.d
$f0
,
160
(
$fp
)
la
$
2
,
size
.16
sw
$
2
,
16
(
$sp
)
la
$
2
,
area
.7
sw
$
2
,
20
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
loop
.17
la
$
6
,
box
.8
la
$
7
,
place
.12
jal
Region
bne
$
2
,
$
0
,
$L30
move
$
2
,
$
0
j
$L25
$L30
:
jal
When
s.d
$f0
,
168
(
$fp
)
la
$
2
,
size
.16
sw
$
2
,
16
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
loop
.17
la
$
6
,
coeff
.9
la
$
7
,
place
.12
jal
SetUp1
jal
When
s.d
$f0
,
176
(
$fp
)
la
$
2
,
size
.16
sw
$
2
,
16
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
loop
.17
la
$
6
,
coeff
.9
la
$
7
,
place
.12
jal
SetUp2
jal
When
s.d
$f0
,
184
(
$fp
)
la
$
2
,
emiss
.11
sw
$
2
,
16
(
$sp
)
la
$
2
,
coeff
.9
sw
$
2
,
20
(
$sp
)
la
$
2
,
diag
.10
sw
$
2
,
24
(
$sp
)
la
$
2
,
rhs
.15
sw
$
2
,
28
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
loop
.17
la
$
6
,
area
.7
la
$
7
,
rho
.14
jal
SetUp3
bne
$
2
,
$
0
,
$L31
move
$
2
,
$
0
j
$L25
$L31
:
jal
When
s.d
$f0
,
192
(
$fp
)
lw
$
2
,
loop
.17
+
8
sw
$
2
,
240
(
$fp
)
la
$
2
,
rhs
.15
sw
$
2
,
16
(
$sp
)
la
$
2
,
result
.13
sw
$
2
,
20
(
$sp
)
lw
$
4
,
280
(
$fp
)
lw
$
5
,
240
(
$fp
)
la
$
6
,
coeff
.9
la
$
7
,
diag
.10
jal
Solver
jal
When
s.d
$f0
,
200
(
$fp
)
la
$
2
,
result
.13
sw
$
2
,
16
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
loop
.17
la
$
6
,
place
.12
la
$
7
,
size
.16
jal
Storer
jal
When
s.d
$f0
,
208
(
$fp
)
lw
$
2
,
284
(
$fp
)
l.d
$f0
,
208
(
$fp
)
l.d
$f2
,
152
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
sw
$
0
,
232
(
$fp
)
$L32
:
lw
$
2
,
232
(
$fp
)
slt
$
3
,
$
2
,
7
bne
$
3
,
$
0
,
$L35
j
$L33
$L35
:
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
40
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
112
addu
$
3
,
$fp
,
160
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
3
,
$
3
,
$
4
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
40
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
112
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L34
:
lw
$
3
,
232
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
232
(
$fp
)
j
$L32
$L33
:
sw
$
0
,
236
(
$fp
)
dsz
216
(
$fp
)
sw
$
0
,
232
(
$fp
)
$L36
:
lw
$
2
,
232
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L39
j
$L37
$L39
:
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
40
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
64
lw
$
3
,
232
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
3
,
loop
.17
+
4
(
$
3
)
lw
$
4
,
loop
.17
(
$
4
)
subu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
1
mtc1
$
4
,
$f0
#
nop
cvt.d.w
$f0
,
$f0
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
40
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
64
lw
$
3
,
232
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$fp
,
40
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
64
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
216
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
216
(
$fp
)
l.s
$f24
,
236
(
$fp
)
#
nop
cvt.d.w
$f24
,
$f24
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
40
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
64
lw
$
3
,
232
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
la
$
4
,
box
.8
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
la
$
3
,
box
.8
+
8
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
sqrt
l.d
$f2
,
$LC33
add.d
$f0
,
$f0
,
$f2
add.d
$f2
,
$f24
,
$f0
trunc.w.d
$f10
,
$f2
,
$
8
s.s
$f10
,
236
(
$fp
)
$L38
:
lw
$
3
,
232
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
232
(
$fp
)
j
$L36
$L37
:
l.d
$f0
,
104
(
$fp
)
l.d
$f2
,
128
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
112
(
$fp
)
l.d
$f4
,
136
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
120
(
$fp
)
l.d
$f4
,
144
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
224
(
$fp
)
l.d
$f0
,
$LC34
s.d
$f0
,
40
(
$fp
)
l.s
$f0
,
236
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
$LC35
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC36
add.d
$f0
,
$f0
,
$f2
l.s
$f2
,
280
(
$fp
)
#
nop
cvt.d.w
$f2
,
$f2
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
48
(
$fp
)
l.d
$f0
,
224
(
$fp
)
l.d
$f2
,
$LC37
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC38
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
56
(
$fp
)
lw
$
2
,
280
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
mtc1
$
2
,
$f0
#
nop
cvt.d.w
$f0
,
$f0
l.s
$f2
,
280
(
$fp
)
#
nop
cvt.d.w
$f2
,
$f2
l.s
$f4
,
280
(
$fp
)
#
nop
cvt.d.w
$f4
,
$f4
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
216
(
$fp
)
sub.d
$f2
,
$f2
,
$f4
l.d
$f20
,
224
(
$fp
)
add.d
$f4
,
$f20
,
$f20
sub.d
$f2
,
$f2
,
$f4
l.d
$f4
,
$LC39
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
$LC40
div.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
l.s
$f0
,
280
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
$LC41
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC42
add.d
$f0
,
$f0
,
$f2
l.s
$f2
,
280
(
$fp
)
#
nop
cvt.d.w
$f2
,
$f2
l.s
$f4
,
280
(
$fp
)
#
nop
cvt.d.w
$f4
,
$f4
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
216
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
72
(
$fp
)
l.s
$f0
,
280
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.s
$f2
,
280
(
$fp
)
#
nop
cvt.d.w
$f2
,
$f2
l.s
$f4
,
280
(
$fp
)
#
nop
cvt.d.w
$f4
,
$f4
l.d
$f6
,
$LC43
add.d
$f4
,
$f4
,
$f6
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
$LC44
sub.d
$f2
,
$f2
,
$f4
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC45
sub.d
$f0
,
$f0
,
$f2
lw
$
3
,
240
(
$fp
)
addu
$
2
,
$
3
,
1
mtc1
$
2
,
$f2
#
nop
cvt.d.w
$f2
,
$f2
lw
$
3
,
240
(
$fp
)
addu
$
2
,
$
3
,
1
mtc1
$
2
,
$f4
#
nop
cvt.d.w
$f4
,
$f4
l.s
$f22
,
240
(
$fp
)
#
nop
cvt.d.w
$f22
,
$f22
l.d
$f6
,
$LC46
add.d
$f22
,
$f22
,
$f6
add.d
$f6
,
$f22
,
$f22
l.d
$f8
,
$LC47
sub.d
$f6
,
$f6
,
$f8
mul.d
$f4
,
$f4
,
$f6
l.d
$f6
,
$LC48
add.d
$f4
,
$f4
,
$f6
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
lw
$
3
,
240
(
$fp
)
addu
$
2
,
$
3
,
1
lw
$
3
,
280
(
$fp
)
mult
$
2
,
$
3
mflo
$
2
mtc1
$
2
,
$f2
#
nop
cvt.d.w
$f2
,
$f2
l.s
$f4
,
240
(
$fp
)
#
nop
cvt.d.w
$f4
,
$f4
l.d
$f6
,
$LC46
add.d
$f4
,
$f4
,
$f6
l.d
$f6
,
$LC49
mul.d
$f4
,
$f4
,
$f6
l.d
$f6
,
$LC41
sub.d
$f4
,
$f6
,
$f4
mul.d
$f2
,
$f2
,
$f4
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
80
(
$fp
)
lw
$
2
,
280
(
$fp
)
move
$
4
,
$
2
sll
$
3
,
$
4
,
1
addu
$
3
,
$
3
,
$
2
sll
$
2
,
$
3
,
4
mtc1
$
2
,
$f0
#
nop
cvt.d.w
$f0
,
$f0
s.d
$f0
,
88
(
$fp
)
lw
$
2
,
288
(
$fp
)
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
48
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
56
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
64
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
72
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
80
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
88
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
la
$
4
,
$LC50
lw
$
5
,
280
(
$fp
)
jal
printf
la
$
4
,
$LC51
jal
printf
sw
$
0
,
232
(
$fp
)
$L40
:
lw
$
2
,
232
(
$fp
)
slt
$
3
,
$
2
,
7
bne
$
3
,
$
0
,
$L43
j
$L41
$L43
:
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
3
,
$fp
,
40
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
112
l.d
$f0
,
0
(
$
3
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1f
$L44
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
3
,
$fp
,
40
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
112
l.d
$f0
,
$LC52
s.d
$f0
,
0
(
$
3
)
$L44
:
lw
$
2
,
232
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
2
la
$
3
,
tasks
.18
addu
$
2
,
$
2
,
$
3
lw
$
3
,
232
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
40
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
112
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
40
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
16
(
$sp
)
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
40
addu
$
4
,
$
4
,
$
5
lw
$
5
,
232
(
$fp
)
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
addu
$
6
,
$fp
,
40
addu
$
5
,
$
5
,
$
6
addu
$
6
,
$
5
,
112
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
0
(
$
6
)
div.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC53
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
24
(
$sp
)
lw
$
4
,
232
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
40
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
112
l.d
$f0
,
0
(
$
5
)
l.d
$f2
,
$LC54
mul.d
$f0
,
$f0
,
$f2
lw
$
4
,
284
(
$fp
)
l.d
$f2
,
0
(
$
4
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
32
(
$sp
)
lw
$
4
,
format
.19
lw
$
5
,
0
(
$
2
)
dlw
$
6
,
0
(
$
3
)
jal
printf
$L42
:
lw
$
3
,
232
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
232
(
$fp
)
j
$L40
$L41
:
lw
$
2
,
284
(
$fp
)
lw
$
3
,
288
(
$fp
)
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
16
(
$sp
)
lw
$
3
,
288
(
$fp
)
lw
$
4
,
284
(
$fp
)
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
div.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC53
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
24
(
$sp
)
l.d
$f0
,
$LC54
s.d
$f0
,
32
(
$sp
)
lw
$
4
,
format
.19
la
$
5
,
$LC55
dlw
$
6
,
0
(
$
2
)
jal
printf
la
$
2
,
result
.13
sw
$
2
,
16
(
$sp
)
lw
$
4
,
280
(
$fp
)
la
$
5
,
coeff
.9
la
$
6
,
diag
.10
la
$
7
,
rhs
.15
jal
Verify
li
$
2
,
0x00000001
#
1
j
$L25
$L25
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
252
(
$sp
)
lw
$fp
,
248
(
$sp
)
l.d
$f24
,
272
(
$sp
)
l.d
$f22
,
264
(
$sp
)
l.d
$f20
,
256
(
$sp
)
addu
$sp
,
$sp
,
280
j
$
31
.
end
Meter
.
loc
1
396
.
ent
When
When
:
.
frame
$fp
,
40
,
$
31
#
vars
=
16
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
40
sw
$
31
,
36
(
$sp
)
sw
$fp
,
32
(
$sp
)
move
$fp
,
$sp
addu
$
2
,
$fp
,
24
addu
$
4
,
$fp
,
16
move
$
5
,
$
2
jal
gettimeofday
l.s
$f0
,
16
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.s
$f2
,
20
(
$fp
)
#
nop
cvt.d.w
$f2
,
$f2
l.d
$f4
,
$LC56
mul.d
$f2
,
$f2
,
$f4
add.d
$f4
,
$f0
,
$f2
mov.d
$f0
,
$f4
j
$L45
$L45
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
36
(
$sp
)
lw
$fp
,
32
(
$sp
)
addu
$sp
,
$sp
,
40
j
$
31
.
end
When
.
loc
1
409
.
ent
Reader
Reader
:
.
frame
$fp
,
144
,
$
31
#
vars
=
120
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
144
sw
$
31
,
140
(
$sp
)
sw
$fp
,
136
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
144
(
$fp
)
sw
$
5
,
148
(
$fp
)
sw
$
6
,
152
(
$fp
)
la
$
4
,
$LC57
la
$
5
,
$LC58
jal
fopen
sw
$
2
,
40
(
$fp
)
lw
$
2
,
40
(
$fp
)
bne
$
2
,
$
0
,
$L47
la
$
4
,
$LC59
jal
printf
li
$
4
,
0x00000001
#
1
jal
exit
$L47
:
sw
$
0
,
24
(
$fp
)
sw
$
0
,
16
(
$fp
)
$L48
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L51
j
$L49
$L51
:
lw
$
2
,
16
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
144
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
4
,
40
(
$fp
)
la
$
5
,
$LC1
move
$
6
,
$
2
jal
fscanf
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
$
2
sw
$
2
,
24
(
$fp
)
$L50
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L48
$L49
:
addu
$
2
,
$fp
,
48
move
$
4
,
$
2
li
$
5
,
0x00000050
#
80
lw
$
6
,
40
(
$fp
)
jal
fgets
lw
$
2
,
24
(
$fp
)
li
$
3
,
0x00000003
#
3
beq
$
2
,
$
3
,
$L52
la
$
4
,
$LC60
jal
printf
li
$
4
,
0x00000001
#
1
jal
exit
$L52
:
sw
$
0
,
24
(
$fp
)
sw
$
0
,
20
(
$fp
)
$L53
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L56
j
$L54
$L56
:
sw
$
0
,
16
(
$fp
)
$L57
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L60
j
$L58
$L60
:
lw
$
2
,
16
(
$fp
)
move
$
4
,
$
2
sll
$
3
,
$
4
,
1
addu
$
3
,
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
148
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
2
,
$
2
,
$
3
lw
$
4
,
40
(
$fp
)
la
$
5
,
$LC1
move
$
6
,
$
2
jal
fscanf
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
$
2
sw
$
2
,
24
(
$fp
)
$L59
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L57
$L58
:
$L55
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L53
$L54
:
addu
$
2
,
$fp
,
48
move
$
4
,
$
2
li
$
5
,
0x00000050
#
80
lw
$
6
,
40
(
$fp
)
jal
fgets
lw
$
2
,
24
(
$fp
)
li
$
3
,
0x00000012
#
18
beq
$
2
,
$
3
,
$L61
la
$
4
,
$LC61
jal
printf
li
$
4
,
0x00000001
#
1
jal
exit
$L61
:
sw
$
0
,
24
(
$fp
)
sw
$
0
,
20
(
$fp
)
$L62
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L65
j
$L63
$L65
:
sw
$
0
,
16
(
$fp
)
$L66
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L69
j
$L67
$L69
:
lw
$
2
,
16
(
$fp
)
move
$
4
,
$
2
sll
$
3
,
$
4
,
1
addu
$
3
,
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
152
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
2
,
$
2
,
$
3
lw
$
4
,
40
(
$fp
)
la
$
5
,
$LC1
move
$
6
,
$
2
jal
fscanf
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
$
2
sw
$
2
,
24
(
$fp
)
$L68
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L66
$L67
:
$L64
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L62
$L63
:
addu
$
2
,
$fp
,
48
move
$
4
,
$
2
li
$
5
,
0x00000050
#
80
lw
$
6
,
40
(
$fp
)
jal
fgets
lw
$
2
,
24
(
$fp
)
li
$
3
,
0x00000012
#
18
beq
$
2
,
$
3
,
$L70
la
$
4
,
$LC61
jal
printf
li
$
4
,
0x00000001
#
1
jal
exit
$L70
:
lw
$
4
,
40
(
$fp
)
jal
fclose
sw
$
0
,
20
(
$fp
)
$L71
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L74
j
$L72
$L74
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
144
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
$LC62
c.lt.d
$f0
,
$f2
bc1t
$L76
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
144
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
$LC63
c.le.d
$f2
,
$f0
bc1t
$L76
j
$L75
$L76
:
la
$
4
,
$LC64
jal
printf
move
$
2
,
$
0
j
$L46
$L75
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
144
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
24
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
144
(
$fp
)
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
dsz
32
(
$fp
)
sw
$
0
,
16
(
$fp
)
$L77
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L80
j
$L78
$L80
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
148
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.lt.d
$f0
,
$f2
bc1t
$L82
lw
$
3
,
16
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
148
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
$LC65
c.lt.d
$f2
,
$f0
bc1t
$L82
j
$L81
$L82
:
la
$
4
,
$LC66
jal
printf
move
$
2
,
$
0
j
$L46
$L81
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
152
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.lt.d
$f0
,
$f2
bc1f
$L83
la
$
4
,
$LC67
jal
printf
move
$
2
,
$
0
j
$L46
$L83
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
152
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
2
)
c.lt.d
$f0
,
$f2
bc1f
$L84
lw
$
3
,
16
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
152
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
32
(
$fp
)
$L84
:
$L79
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L77
$L78
:
l.d
$f0
,
32
(
$fp
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
c.eq.d
$f0
,
$f2
bc1f
$L85
la
$
4
,
$LC68
jal
printf
move
$
2
,
$
0
j
$L46
$L85
:
$L73
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L71
$L72
:
lw
$
3
,
144
(
$fp
)
addu
$
2
,
$
3
,
48
lw
$
4
,
144
(
$fp
)
addu
$
3
,
$
4
,
24
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
li
$
2
,
0x00000001
#
1
j
$L46
$L46
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
140
(
$sp
)
lw
$fp
,
136
(
$sp
)
addu
$sp
,
$sp
,
144
j
$
31
.
end
Reader
.
loc
1
504
.
ent
Region
Region
:
.
frame
$fp
,
120
,
$
31
#
vars
=
88
,
regs
=
2
/
1
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
12
.
fmask
0x00300000
,-
4
subu
$sp
,
$sp
,
120
sw
$
31
,
108
(
$sp
)
sw
$fp
,
104
(
$sp
)
s.d
$f20
,
112
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
120
(
$fp
)
sw
$
5
,
124
(
$fp
)
sw
$
6
,
128
(
$fp
)
sw
$
7
,
132
(
$fp
)
lw
$
2
,
128
(
$fp
)
lw
$
4
,
128
(
$fp
)
addu
$
3
,
$
4
,
8
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f20
,
$f0
,
$f2
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
3
,
8
lw
$
4
,
128
(
$fp
)
addu
$
3
,
$
4
,
16
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
add.d
$f20
,
$f20
,
$f0
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
3
,
16
lw
$
3
,
128
(
$fp
)
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
add.d
$f20
,
$f20
,
$f0
add.d
$f0
,
$f20
,
$f20
s.d
$f0
,
64
(
$fp
)
dsz
72
(
$fp
)
l.s
$f0
,
120
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
s.d
$f0
,
80
(
$fp
)
lw
$
2
,
124
(
$fp
)
sw
$
0
,
0
(
$
2
)
sw
$
0
,
24
(
$fp
)
$L87
:
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
5
bne
$
3
,
$
0
,
$L90
j
$L88
$L90
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
128
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
8
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
72
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
72
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
124
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
4
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
72
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
64
(
$fp
)
div.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC69
add.d
$f0
,
$f0
,
$f2
trunc.w.d
$f4
,
$f0
,
$
8
mfc1
$
3
,
$f4
subu
$
4
,
$
3
,
1
sw
$
4
,
0
(
$
2
)
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
124
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
8
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
124
(
$fp
)
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
4
lw
$
3
,
0
(
$
4
)
addu
$
4
,
$
3
,
1
sw
$
4
,
0
(
$
2
)
$L89
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L87
$L88
:
lw
$
3
,
124
(
$fp
)
addu
$
2
,
$
3
,
44
lw
$
3
,
120
(
$fp
)
subu
$
4
,
$
3
,
1
sw
$
4
,
0
(
$
2
)
sw
$
0
,
24
(
$fp
)
$L91
:
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L94
j
$L92
$L94
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
4
,
124
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
4
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
124
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
2
,
0
(
$
2
)
lw
$
3
,
0
(
$
3
)
subu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
1
sw
$
3
,
48
(
$fp
)
dsz
80
(
$fp
)
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L95
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
subu
$
3
,
$
2
,
8
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
80
(
$fp
)
$L95
:
l.s
$f0
,
48
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
mul.d
$f0
,
$f0
,
$f2
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
8
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
sqrt
l.d
$f2
,
$LC69
add.d
$f0
,
$f0
,
$f2
trunc.w.d
$f4
,
$f0
,
$
8
s.s
$f4
,
44
(
$fp
)
lw
$
2
,
44
(
$fp
)
lw
$
3
,
48
(
$fp
)
slt
$
2
,
$
3
,
$
2
beq
$
2
,
$
0
,
$L96
lw
$
2
,
48
(
$fp
)
sw
$
2
,
44
(
$fp
)
$L96
:
lw
$
2
,
44
(
$fp
)
bne
$
2
,
$
0
,
$L97
li
$
2
,
0x00000001
#
1
sw
$
2
,
44
(
$fp
)
$L97
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.s
$f0
,
44
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
0
(
$
2
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
96
(
$fp
)
lw
$
2
,
44
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
28
(
$fp
)
dsz
64
(
$fp
)
sw
$
0
,
16
(
$fp
)
$L98
:
lw
$
2
,
16
(
$fp
)
lw
$
3
,
44
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L101
j
$L99
$L101
:
lw
$
2
,
28
(
$fp
)
lw
$
3
,
44
(
$fp
)
div
$
2
,
$
2
,
$
3
sw
$
2
,
32
(
$fp
)
lw
$
2
,
28
(
$fp
)
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
44
(
$fp
)
div
$
2
,
$
2
,
$
3
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
2
,
$
3
sw
$
2
,
52
(
$fp
)
lw
$
2
,
52
(
$fp
)
bne
$
2
,
$
0
,
$L102
la
$
4
,
$LC70
jal
printf
move
$
2
,
$
0
j
$L86
$L102
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
128
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
8
l.s
$f0
,
52
(
$fp
)
#
nop
cvt.d.w
$f0
,
$f0
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
56
(
$fp
)
dsz
72
(
$fp
)
l.d
$f0
,
96
(
$fp
)
l.d
$f2
,
56
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC71
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
88
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
124
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
lw
$
2
,
32
(
$fp
)
addu
$
3
,
$
3
,
$
2
sw
$
3
,
40
(
$fp
)
lw
$
2
,
40
(
$fp
)
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
36
(
$fp
)
lw
$
2
,
40
(
$fp
)
sw
$
2
,
20
(
$fp
)
$L103
:
lw
$
2
,
20
(
$fp
)
lw
$
3
,
36
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L106
j
$L104
$L106
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
136
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
96
(
$fp
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
136
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
16384
l.d
$f0
,
56
(
$fp
)
s.d
$f0
,
0
(
$
3
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
132
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
64
(
$fp
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
132
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
16384
l.d
$f0
,
72
(
$fp
)
s.d
$f0
,
0
(
$
3
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
132
(
$fp
)
addu
$
2
,
$
2
,
$
3
li
$
3
,
0x00008000
#
32768
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
80
(
$fp
)
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
140
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
88
(
$fp
)
s.d
$f0
,
0
(
$
2
)
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
56
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
72
(
$fp
)
$L105
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L103
$L104
:
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
96
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
lw
$
2
,
28
(
$fp
)
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
2
,
$
3
sw
$
2
,
28
(
$fp
)
$L100
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L98
$L99
:
$L93
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L91
$L92
:
li
$
2
,
0x00000001
#
1
j
$L86
$L86
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
108
(
$sp
)
lw
$fp
,
104
(
$sp
)
l.d
$f20
,
112
(
$sp
)
addu
$sp
,
$sp
,
120
j
$
31
.
end
Region
.
loc
1
590
.
ent
SetUp1
SetUp1
:
.
frame
$fp
,
256
,
$
31
#
vars
=
232
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
256
sw
$
31
,
252
(
$sp
)
sw
$fp
,
248
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
256
(
$fp
)
sw
$
5
,
260
(
$fp
)
sw
$
6
,
264
(
$fp
)
sw
$
7
,
268
(
$fp
)
sw
$
0
,
36
(
$fp
)
$L108
:
lw
$
2
,
36
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L111
j
$L109
$L111
:
lw
$
2
,
36
(
$fp
)
addu
$
3
,
$
2
,
3
sw
$
3
,
44
(
$fp
)
lw
$
2
,
44
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
260
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
move
$
2
,
$
3
sll
$
3
,
$
2
,
3
lw
$
4
,
268
(
$fp
)
addu
$
2
,
$
3
,
$
4
li
$
3
,
0x00008000
#
32768
addu
$
2
,
$
2
,
$
3
lw
$
3
,
44
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
260
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$
3
)
move
$
3
,
$
4
sll
$
4
,
$
3
,
3
lw
$
5
,
268
(
$fp
)
addu
$
3
,
$
4
,
$
5
li
$
4
,
0x00008000
#
32768
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
184
(
$fp
)
l.d
$f0
,
184
(
$fp
)
l.d
$f2
,
184
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
224
(
$fp
)
lw
$
2
,
36
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
260
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
40
(
$fp
)
$L112
:
lw
$
2
,
36
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
260
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
40
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L113
$L115
:
lw
$
2
,
44
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
260
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
48
(
$fp
)
$L116
:
lw
$
2
,
44
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
260
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
48
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L117
$L119
:
sw
$
0
,
20
(
$fp
)
$L120
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L123
j
$L121
$L123
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
40
lw
$
4
,
20
(
$fp
)
lw
$
3
,
48
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
268
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
lw
$
5
,
20
(
$fp
)
lw
$
4
,
40
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
268
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
72
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
40
lw
$
5
,
20
(
$fp
)
lw
$
4
,
48
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
272
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
56
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
40
lw
$
5
,
20
(
$fp
)
lw
$
4
,
40
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
272
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
88
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
72
lw
$
5
,
20
(
$fp
)
lw
$
4
,
40
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
272
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
104
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
40
lw
$
4
,
20
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
40
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
136
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
72
lw
$
4
,
20
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
72
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
120
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
56
lw
$
4
,
20
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
56
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
152
lw
$
3
,
20
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
3
,
$
5
addu
$
3
,
$
4
,
88
lw
$
4
,
20
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
88
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L122
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L120
$L121
:
dsz
192
(
$fp
)
sw
$
0
,
28
(
$fp
)
$L124
:
lw
$
2
,
28
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L127
j
$L125
$L127
:
sw
$
0
,
16
(
$fp
)
$L128
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L131
j
$L129
$L131
:
lw
$
2
,
16
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
4
lw
$
3
,
28
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
5
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$fp
,
120
addu
$
2
,
$
3
,
$
2
l.d
$f0
,
8
(
$
2
)
l.d
$f2
,
184
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
200
(
$fp
)
l.d
$f12
,
200
(
$fp
)
jal
sqrt
s.d
$f0
,
208
(
$fp
)
l.d
$f0
,
$LC72
l.d
$f2
,
208
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
216
(
$fp
)
dsz
240
(
$fp
)
sw
$
0
,
24
(
$fp
)
$L132
:
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L135
j
$L133
$L135
:
sw
$
0
,
32
(
$fp
)
$L136
:
lw
$
2
,
32
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L139
j
$L137
$L139
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
4
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
5
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$fp
,
56
addu
$
2
,
$
3
,
$
2
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
232
(
$fp
)
l.d
$f0
,
232
(
$fp
)
l.d
$f2
,
216
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
l.d
$f4
,
232
(
$fp
)
neg.d
$f2
,
$f4
mul.d
$f0
,
$f2
,
$f0
l.d
$f2
,
240
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
240
(
$fp
)
$L138
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L136
$L137
:
l.d
$f0
,
240
(
$fp
)
neg.d
$f2
,
$f0
s.d
$f2
,
240
(
$fp
)
$L134
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L132
$L133
:
l.d
$f0
,
152
(
$fp
)
l.d
$f2
,
200
(
$fp
)
add.d
$f0
,
$f0
,
$f2
l.d
$f2
,
136
(
$fp
)
l.d
$f4
,
200
(
$fp
)
add.d
$f2
,
$f2
,
$f4
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
120
(
$fp
)
l.d
$f4
,
200
(
$fp
)
add.d
$f2
,
$f2
,
$f4
l.d
$f4
,
168
(
$fp
)
l.d
$f6
,
200
(
$fp
)
add.d
$f4
,
$f4
,
$f6
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
l.d
$f2
,
208
(
$fp
)
l.d
$f4
,
$LC73
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
240
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
192
(
$fp
)
sub.d
$f2
,
$f2
,
$f4
l.d
$f4
,
224
(
$fp
)
mul.d
$f0
,
$f0
,
$f4
sub.d
$f2
,
$f2
,
$f0
s.d
$f2
,
192
(
$fp
)
$L130
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L128
$L129
:
l.d
$f0
,
192
(
$fp
)
neg.d
$f2
,
$f0
s.d
$f2
,
192
(
$fp
)
$L126
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L124
$L125
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
28
(
$fp
)
$L140
:
lw
$
2
,
28
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L143
j
$L141
$L143
:
sw
$
0
,
16
(
$fp
)
$L144
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L147
j
$L145
$L147
:
lw
$
2
,
16
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
4
lw
$
3
,
28
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
5
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$fp
,
120
addu
$
2
,
$
3
,
$
2
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
184
(
$fp
)
add.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
sqrt
s.d
$f0
,
208
(
$fp
)
l.d
$f0
,
$LC72
l.d
$f2
,
208
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
216
(
$fp
)
dsz
240
(
$fp
)
sw
$
0
,
24
(
$fp
)
$L148
:
lw
$
2
,
24
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L151
j
$L149
$L151
:
sw
$
0
,
32
(
$fp
)
$L152
:
lw
$
2
,
32
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L155
j
$L153
$L155
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
4
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
5
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$fp
,
56
addu
$
2
,
$
3
,
$
2
l.d
$f0
,
8
(
$
2
)
s.d
$f0
,
232
(
$fp
)
l.d
$f0
,
232
(
$fp
)
l.d
$f2
,
216
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
l.d
$f4
,
232
(
$fp
)
neg.d
$f2
,
$f4
mul.d
$f0
,
$f2
,
$f0
l.d
$f2
,
240
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
240
(
$fp
)
$L154
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L152
$L153
:
l.d
$f0
,
240
(
$fp
)
neg.d
$f2
,
$f0
s.d
$f2
,
240
(
$fp
)
$L150
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L148
$L149
:
l.d
$f0
,
208
(
$fp
)
l.d
$f2
,
$LC73
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
240
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
192
(
$fp
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
192
(
$fp
)
$L146
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L144
$L145
:
l.d
$f0
,
192
(
$fp
)
neg.d
$f2
,
$f0
s.d
$f2
,
192
(
$fp
)
$L142
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L140
$L141
:
lw
$
3
,
40
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
264
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
192
(
$fp
)
s.d
$f0
,
0
(
$
2
)
lw
$
3
,
48
(
$fp
)
lw
$
2
,
40
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
264
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
192
(
$fp
)
s.d
$f0
,
0
(
$
2
)
$L118
:
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
48
(
$fp
)
j
$L116
$L117
:
$L114
:
lw
$
3
,
40
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
40
(
$fp
)
j
$L112
$L113
:
$L110
:
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
36
(
$fp
)
j
$L108
$L109
:
$L107
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
252
(
$sp
)
lw
$fp
,
248
(
$sp
)
addu
$sp
,
$sp
,
256
j
$
31
.
end
SetUp1
.
loc
1
673
.
ent
SetUp2
SetUp2
:
.
frame
$fp
,
512
,
$
31
#
vars
=
440
,
regs
=
2
/
6
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
52
.
fmask
0xfff00000
,-
4
subu
$sp
,
$sp
,
512
sw
$
31
,
460
(
$sp
)
sw
$fp
,
456
(
$sp
)
s.d
$f30
,
504
(
$sp
)
s.d
$f28
,
496
(
$sp
)
s.d
$f26
,
488
(
$sp
)
s.d
$f24
,
480
(
$sp
)
s.d
$f22
,
472
(
$sp
)
s.d
$f20
,
464
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
512
(
$fp
)
sw
$
5
,
516
(
$fp
)
sw
$
6
,
520
(
$fp
)
sw
$
7
,
524
(
$fp
)
sw
$
0
,
20
(
$fp
)
$L157
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L160
j
$L158
$L160
:
sw
$
0
,
16
(
$fp
)
$L161
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
2
bne
$
3
,
$
0
,
$L164
j
$L162
$L164
:
lw
$
2
,
20
(
$fp
)
lw
$
4
,
16
(
$fp
)
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
1
li
$
6
,
0x2aaaaaab
#
715827883
mult
$
2
,
$
6
mfhi
$
5
mflo
$
4
srl
$
6
,
$
5
,
0
move
$
7
,
$
0
sra
$
4
,
$
2
,
31
subu
$
3
,
$
6
,
$
4
move
$
5
,
$
3
sll
$
4
,
$
5
,
1
addu
$
4
,
$
4
,
$
3
sll
$
3
,
$
4
,
1
subu
$
2
,
$
2
,
$
3
sw
$
2
,
28
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
516
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
24
(
$fp
)
$L165
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
516
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
24
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L166
$L168
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
524
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
3
,
28
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
516
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
0
(
$
3
)
move
$
3
,
$
4
sll
$
4
,
$
3
,
3
lw
$
5
,
524
(
$fp
)
addu
$
3
,
$
4
,
$
5
li
$
4
,
0x00008000
#
32768
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
216
(
$fp
)
lw
$
3
,
16
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
528
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
216
(
$fp
)
l.d
$f2
,
0
(
$
2
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
224
(
$fp
)
l.d
$f0
,
216
(
$fp
)
l.d
$f2
,
216
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
216
(
$fp
)
l.d
$f0
,
224
(
$fp
)
l.d
$f2
,
224
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
224
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
516
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
32
(
$fp
)
$L169
:
lw
$
2
,
28
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
516
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
32
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L170
$L172
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
524
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
li
$
3
,
0x00000001
#
1
lw
$
5
,
16
(
$fp
)
subu
$
4
,
$
3
,
$
5
lw
$
3
,
24
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
524
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
56
(
$fp
)
lw
$
3
,
16
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
528
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
0
(
$
2
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
64
(
$fp
)
li
$
2
,
0x00000001
#
1
lw
$
4
,
16
(
$fp
)
subu
$
3
,
$
2
,
$
4
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
528
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
0
(
$
2
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
72
(
$fp
)
li
$
2
,
0x00000001
#
1
lw
$
4
,
16
(
$fp
)
subu
$
3
,
$
2
,
$
4
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
528
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
0
(
$
2
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
80
(
$fp
)
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
56
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
88
(
$fp
)
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
64
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
96
(
$fp
)
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
72
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
104
(
$fp
)
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
80
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
112
(
$fp
)
li
$
2
,
0x00000001
#
1
lw
$
4
,
16
(
$fp
)
subu
$
3
,
$
2
,
$
4
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
524
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
3
,
24
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
lw
$
4
,
524
(
$fp
)
addu
$
3
,
$
3
,
$
4
li
$
4
,
0x00008000
#
32768
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f0
,
$f2
s.d
$f0
,
232
(
$fp
)
li
$
2
,
0x00000001
#
1
lw
$
4
,
16
(
$fp
)
subu
$
3
,
$
2
,
$
4
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
528
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
232
(
$fp
)
l.d
$f2
,
0
(
$
2
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
240
(
$fp
)
l.d
$f0
,
232
(
$fp
)
l.d
$f2
,
232
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC74
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
232
(
$fp
)
l.d
$f0
,
240
(
$fp
)
l.d
$f2
,
240
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
$LC74
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
240
(
$fp
)
l.d
$f0
,
216
(
$fp
)
l.d
$f2
,
232
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
152
(
$fp
)
l.d
$f0
,
216
(
$fp
)
l.d
$f2
,
240
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
160
(
$fp
)
l.d
$f0
,
224
(
$fp
)
l.d
$f2
,
232
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
168
(
$fp
)
l.d
$f0
,
224
(
$fp
)
l.d
$f2
,
240
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
176
(
$fp
)
l.d
$f12
,
152
(
$fp
)
jal
sqrt
s.d
$f0
,
120
(
$fp
)
l.d
$f12
,
160
(
$fp
)
jal
sqrt
s.d
$f0
,
128
(
$fp
)
l.d
$f12
,
168
(
$fp
)
jal
sqrt
s.d
$f0
,
136
(
$fp
)
l.d
$f12
,
176
(
$fp
)
jal
sqrt
s.d
$f0
,
144
(
$fp
)
l.d
$f0
,
$LC75
l.d
$f2
,
120
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
184
(
$fp
)
l.d
$f0
,
$LC75
l.d
$f2
,
128
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
192
(
$fp
)
l.d
$f0
,
$LC75
l.d
$f2
,
136
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
200
(
$fp
)
l.d
$f0
,
$LC75
l.d
$f2
,
144
(
$fp
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
208
(
$fp
)
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
184
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f20
,
$f0
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
184
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f22
,
$f0
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
184
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f24
,
$f0
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
184
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f26
,
$f0
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
192
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f28
,
$f0
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
192
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
mov.d
$f30
,
$f0
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
192
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
376
(
$fp
)
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
192
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
384
(
$fp
)
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
200
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
392
(
$fp
)
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
200
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
400
(
$fp
)
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
200
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
408
(
$fp
)
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
200
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
416
(
$fp
)
l.d
$f0
,
56
(
$fp
)
l.d
$f2
,
208
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
424
(
$fp
)
l.d
$f0
,
64
(
$fp
)
l.d
$f2
,
208
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
432
(
$fp
)
l.d
$f0
,
72
(
$fp
)
l.d
$f2
,
208
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
s.d
$f0
,
440
(
$fp
)
l.d
$f0
,
80
(
$fp
)
l.d
$f2
,
208
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
atan
l.d
$f4
,
56
(
$fp
)
mul.d
$f2
,
$f20
,
$f4
l.d
$f6
,
64
(
$fp
)
mul.d
$f4
,
$f22
,
$f6
sub.d
$f2
,
$f2
,
$f4
l.d
$f6
,
72
(
$fp
)
mul.d
$f4
,
$f24
,
$f6
sub.d
$f2
,
$f2
,
$f4
l.d
$f6
,
80
(
$fp
)
mul.d
$f4
,
$f26
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f4
,
120
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
l.d
$f4
,
56
(
$fp
)
neg.d
$f6
,
$f4
mul.d
$f4
,
$f6
,
$f28
l.d
$f8
,
64
(
$fp
)
mul.d
$f6
,
$f30
,
$f8
add.d
$f4
,
$f4
,
$f6
l.d
$f8
,
72
(
$fp
)
l.d
$f10
,
376
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
add.d
$f4
,
$f4
,
$f6
l.d
$f8
,
80
(
$fp
)
l.d
$f10
,
384
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
sub.d
$f4
,
$f4
,
$f6
l.d
$f6
,
128
(
$fp
)
mul.d
$f4
,
$f4
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f4
,
56
(
$fp
)
neg.d
$f6
,
$f4
l.d
$f10
,
392
(
$fp
)
mul.d
$f4
,
$f6
,
$f10
l.d
$f8
,
64
(
$fp
)
l.d
$f10
,
400
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
add.d
$f4
,
$f4
,
$f6
l.d
$f8
,
72
(
$fp
)
l.d
$f10
,
408
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
add.d
$f4
,
$f4
,
$f6
l.d
$f8
,
80
(
$fp
)
l.d
$f10
,
416
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
sub.d
$f4
,
$f4
,
$f6
l.d
$f6
,
136
(
$fp
)
mul.d
$f4
,
$f4
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f6
,
56
(
$fp
)
l.d
$f10
,
424
(
$fp
)
mul.d
$f4
,
$f10
,
$f6
l.d
$f8
,
64
(
$fp
)
l.d
$f10
,
432
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
sub.d
$f4
,
$f4
,
$f6
l.d
$f8
,
72
(
$fp
)
l.d
$f10
,
440
(
$fp
)
mul.d
$f6
,
$f10
,
$f8
sub.d
$f4
,
$f4
,
$f6
l.d
$f6
,
80
(
$fp
)
mul.d
$f0
,
$f0
,
$f6
add.d
$f4
,
$f4
,
$f0
l.d
$f6
,
144
(
$fp
)
mul.d
$f0
,
$f4
,
$f6
add.d
$f2
,
$f2
,
$f0
s.d
$f2
,
48
(
$fp
)
l.d
$f0
,
88
(
$fp
)
l.d
$f2
,
152
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
248
(
$fp
)
l.d
$f0
,
96
(
$fp
)
l.d
$f2
,
152
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
256
(
$fp
)
l.d
$f0
,
104
(
$fp
)
l.d
$f2
,
152
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
264
(
$fp
)
l.d
$f0
,
112
(
$fp
)
l.d
$f2
,
152
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
272
(
$fp
)
l.d
$f0
,
88
(
$fp
)
l.d
$f2
,
160
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
280
(
$fp
)
l.d
$f0
,
96
(
$fp
)
l.d
$f2
,
160
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
288
(
$fp
)
l.d
$f0
,
104
(
$fp
)
l.d
$f2
,
160
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
296
(
$fp
)
l.d
$f0
,
112
(
$fp
)
l.d
$f2
,
160
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
304
(
$fp
)
l.d
$f0
,
88
(
$fp
)
l.d
$f2
,
168
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
312
(
$fp
)
l.d
$f0
,
96
(
$fp
)
l.d
$f2
,
168
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
320
(
$fp
)
l.d
$f0
,
104
(
$fp
)
l.d
$f2
,
168
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
328
(
$fp
)
l.d
$f0
,
112
(
$fp
)
l.d
$f2
,
168
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
336
(
$fp
)
l.d
$f0
,
88
(
$fp
)
l.d
$f2
,
176
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
344
(
$fp
)
l.d
$f0
,
96
(
$fp
)
l.d
$f2
,
176
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
352
(
$fp
)
l.d
$f0
,
104
(
$fp
)
l.d
$f2
,
176
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
360
(
$fp
)
l.d
$f0
,
112
(
$fp
)
l.d
$f2
,
176
(
$fp
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
368
(
$fp
)
l.d
$f0
,
248
(
$fp
)
l.d
$f2
,
344
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
280
(
$fp
)
l.d
$f4
,
312
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f20
,
$f0
l.d
$f0
,
256
(
$fp
)
l.d
$f2
,
352
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
288
(
$fp
)
l.d
$f4
,
320
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f22
,
$f0
l.d
$f0
,
264
(
$fp
)
l.d
$f2
,
360
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
296
(
$fp
)
l.d
$f4
,
328
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f24
,
$f0
l.d
$f0
,
272
(
$fp
)
l.d
$f2
,
368
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
304
(
$fp
)
l.d
$f4
,
336
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f26
,
$f0
l.d
$f0
,
248
(
$fp
)
l.d
$f2
,
272
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
256
(
$fp
)
l.d
$f4
,
264
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f28
,
$f0
l.d
$f0
,
280
(
$fp
)
l.d
$f2
,
304
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
288
(
$fp
)
l.d
$f4
,
296
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
mov.d
$f30
,
$f0
l.d
$f0
,
312
(
$fp
)
l.d
$f2
,
336
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
320
(
$fp
)
l.d
$f4
,
328
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
s.d
$f0
,
448
(
$fp
)
l.d
$f0
,
344
(
$fp
)
l.d
$f2
,
368
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
352
(
$fp
)
l.d
$f4
,
360
(
$fp
)
mul.d
$f2
,
$f2
,
$f4
div.d
$f0
,
$f0
,
$f2
mov.d
$f12
,
$f0
jal
log
l.d
$f4
,
88
(
$fp
)
mul.d
$f2
,
$f20
,
$f4
l.d
$f6
,
96
(
$fp
)
mul.d
$f4
,
$f22
,
$f6
sub.d
$f2
,
$f2
,
$f4
l.d
$f6
,
104
(
$fp
)
mul.d
$f4
,
$f24
,
$f6
sub.d
$f2
,
$f2
,
$f4
l.d
$f6
,
112
(
$fp
)
mul.d
$f4
,
$f26
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f6
,
152
(
$fp
)
mul.d
$f4
,
$f28
,
$f6
sub.d
$f2
,
$f2
,
$f4
l.d
$f6
,
160
(
$fp
)
mul.d
$f4
,
$f30
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f6
,
168
(
$fp
)
l.d
$f10
,
448
(
$fp
)
mul.d
$f4
,
$f10
,
$f6
add.d
$f2
,
$f2
,
$f4
l.d
$f4
,
176
(
$fp
)
mul.d
$f0
,
$f0
,
$f4
sub.d
$f2
,
$f2
,
$f0
s.d
$f2
,
40
(
$fp
)
lw
$
3
,
24
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
520
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
48
(
$fp
)
l.d
$f2
,
$LC76
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
40
(
$fp
)
add.d
$f0
,
$f0
,
$f2
abs.d
$f2
,
$f0
s.d
$f2
,
0
(
$
2
)
lw
$
3
,
32
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
520
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
24
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
520
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
$L171
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L169
$L170
:
$L167
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L165
$L166
:
$L163
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L161
$L162
:
$L159
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L157
$L158
:
$L156
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
460
(
$sp
)
lw
$fp
,
456
(
$sp
)
l.d
$f30
,
504
(
$sp
)
l.d
$f28
,
496
(
$sp
)
l.d
$f26
,
488
(
$sp
)
l.d
$f24
,
480
(
$sp
)
l.d
$f22
,
472
(
$sp
)
l.d
$f20
,
464
(
$sp
)
addu
$sp
,
$sp
,
512
j
$
31
.
end
SetUp2
.
loc
1
787
.
ent
SetUp3
SetUp3
:
.
frame
$fp
,
96
,
$
31
#
vars
=
72
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
96
sw
$
31
,
92
(
$sp
)
sw
$fp
,
88
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
96
(
$fp
)
sw
$
5
,
100
(
$fp
)
sw
$
6
,
104
(
$fp
)
sw
$
7
,
108
(
$fp
)
sw
$
0
,
20
(
$fp
)
$L174
:
lw
$
2
,
20
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L177
j
$L175
$L177
:
sw
$
0
,
16
(
$fp
)
$L178
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L181
j
$L179
$L181
:
lw
$
2
,
16
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
24
lw
$
4
,
20
(
$fp
)
lw
$
3
,
16
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
move
$
6
,
$
4
sll
$
5
,
$
6
,
1
addu
$
5
,
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
108
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
$LC77
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
2
,
16
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
2
,
$
4
addu
$
2
,
$
3
,
48
lw
$
4
,
20
(
$fp
)
lw
$
3
,
16
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
move
$
6
,
$
4
sll
$
5
,
$
6
,
1
addu
$
5
,
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
112
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
3
,
$
3
,
$
4
lw
$
4
,
16
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$fp
,
16
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
24
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
5
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L180
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L178
$L179
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
24
(
$fp
)
$L182
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
24
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L183
$L185
:
dsz
32
(
$fp
)
sw
$
0
,
28
(
$fp
)
$L186
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
28
(
$fp
)
lw
$
2
,
0
(
$
2
)
slt
$
3
,
$
3
,
$
2
bne
$
3
,
$
0
,
$L189
j
$L187
$L189
:
lw
$
3
,
24
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
116
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
2
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
32
(
$fp
)
$L188
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L186
$L187
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
0
(
$
3
)
addu
$
3
,
$
2
,
1
sw
$
3
,
28
(
$fp
)
$L190
:
lw
$
2
,
28
(
$fp
)
lw
$
3
,
96
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L193
j
$L191
$L193
:
lw
$
3
,
24
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
116
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
0
(
$
2
)
add.d
$f0
,
$f0
,
$f2
s.d
$f0
,
32
(
$fp
)
$L192
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L190
$L191
:
lw
$
2
,
24
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
104
(
$fp
)
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
32
(
$fp
)
l.d
$f4
,
0
(
$
2
)
sub.d
$f2
,
$f0
,
$f4
abs.d
$f0
,
$f2
l.d
$f2
,
32
(
$fp
)
l.d
$f4
,
$LC78
mul.d
$f2
,
$f2
,
$f4
c.lt.d
$f2
,
$f0
bc1f
$L194
la
$
4
,
$LC79
jal
printf
move
$
2
,
$
0
j
$L173
$L194
:
l.d
$f0
,
32
(
$fp
)
neg.d
$f2
,
$f0
s.d
$f2
,
32
(
$fp
)
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
28
(
$fp
)
$L195
:
lw
$
2
,
20
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
100
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
28
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L196
$L198
:
lw
$
3
,
24
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
116
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
dsz
0
(
$
2
)
$L197
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L195
$L196
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
16
(
$fp
)
$L199
:
lw
$
2
,
16
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L202
j
$L200
$L202
:
lw
$
3
,
16
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
120
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
3
,
16
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
24
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
32
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
3
,
16
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
124
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
3
,
16
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
3
addu
$
4
,
$fp
,
16
addu
$
3
,
$
3
,
$
4
addu
$
4
,
$
3
,
48
l.d
$f0
,
0
(
$
4
)
l.d
$f2
,
32
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L201
:
lw
$
3
,
16
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
16
(
$fp
)
j
$L199
$L200
:
$L184
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L182
$L183
:
$L176
:
lw
$
3
,
20
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
20
(
$fp
)
j
$L174
$L175
:
li
$
2
,
0x00000001
#
1
j
$L173
$L173
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
92
(
$sp
)
lw
$fp
,
88
(
$sp
)
addu
$sp
,
$sp
,
96
j
$
31
.
end
SetUp3
.
loc
1
855
.
ent
Solver
Solver
:
.
frame
$fp
,
56
,
$
31
#
vars
=
24
,
regs
=
2
/
0
,
args
=
24
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
56
sw
$
31
,
52
(
$sp
)
sw
$fp
,
48
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
56
(
$fp
)
sw
$
5
,
60
(
$fp
)
sw
$
6
,
64
(
$fp
)
sw
$
7
,
68
(
$fp
)
sw
$
0
,
36
(
$fp
)
$L204
:
lw
$
2
,
36
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L207
j
$L205
$L207
:
lw
$
2
,
60
(
$fp
)
sw
$
2
,
24
(
$fp
)
$L208
:
lw
$
2
,
24
(
$fp
)
lw
$
3
,
56
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L211
j
$L209
$L211
:
lw
$
3
,
24
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
24
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
68
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
lw
$
3
,
36
(
$fp
)
lw
$
2
,
24
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
24
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
72
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
sw
$
0
,
28
(
$fp
)
$L212
:
lw
$
2
,
28
(
$fp
)
lw
$
3
,
24
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L215
j
$L213
$L215
:
lw
$
3
,
24
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
28
(
$fp
)
lw
$
3
,
24
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
$L214
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L212
$L213
:
$L210
:
lw
$
3
,
24
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
24
(
$fp
)
j
$L208
$L209
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
28
(
$fp
)
$L216
:
lw
$
2
,
28
(
$fp
)
lw
$
3
,
60
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L219
j
$L217
$L219
:
lw
$
3
,
28
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
28
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
68
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
$LC80
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
3
,
36
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
28
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
72
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
$L218
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L216
$L217
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
60
(
$fp
)
sw
$
2
,
28
(
$fp
)
$L220
:
lw
$
2
,
28
(
$fp
)
lw
$
3
,
56
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L223
j
$L221
$L223
:
lw
$
2
,
60
(
$fp
)
sw
$
2
,
32
(
$fp
)
$L224
:
lw
$
2
,
32
(
$fp
)
lw
$
3
,
28
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L227
j
$L225
$L227
:
lw
$
2
,
32
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
14
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
28
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
14
lw
$
4
,
64
(
$fp
)
addu
$
3
,
$
3
,
$
4
li
$
4
,
0x00000001
#
1
sw
$
4
,
16
(
$sp
)
lw
$
4
,
32
(
$fp
)
move
$
5
,
$
2
li
$
6
,
0x00000001
#
1
move
$
7
,
$
3
jal
Ddot
lw
$
3
,
28
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
28
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L226
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L224
$L225
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
32
(
$fp
)
$L228
:
lw
$
2
,
32
(
$fp
)
lw
$
3
,
28
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L231
j
$L229
$L231
:
lw
$
3
,
28
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
40
(
$fp
)
lw
$
3
,
28
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
32
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
lw
$
3
,
28
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
28
(
$fp
)
lw
$
3
,
28
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
lw
$
5
,
28
(
$fp
)
lw
$
4
,
32
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
64
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
40
(
$fp
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L230
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L228
$L229
:
lw
$
3
,
28
(
$fp
)
lw
$
2
,
28
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
64
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
28
(
$fp
)
lw
$
3
,
28
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
$LC80
l.d
$f2
,
0
(
$
3
)
div.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L222
:
lw
$
3
,
28
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
28
(
$fp
)
j
$L220
$L221
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
60
(
$fp
)
sw
$
2
,
32
(
$fp
)
$L232
:
lw
$
2
,
32
(
$fp
)
lw
$
3
,
56
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L235
j
$L233
$L235
:
lw
$
2
,
36
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
14
lw
$
3
,
76
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
32
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
14
lw
$
4
,
64
(
$fp
)
addu
$
3
,
$
3
,
$
4
li
$
4
,
0x00000001
#
1
sw
$
4
,
16
(
$sp
)
lw
$
4
,
32
(
$fp
)
move
$
5
,
$
2
li
$
6
,
0x00000001
#
1
move
$
7
,
$
3
jal
Ddot
lw
$
3
,
36
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
76
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L234
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L232
$L233
:
.
set
noreorder
nop
.
set
reorder
sw
$
0
,
32
(
$fp
)
$L236
:
lw
$
2
,
32
(
$fp
)
lw
$
3
,
56
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L239
j
$L237
$L239
:
lw
$
3
,
36
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
76
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
lw
$
5
,
32
(
$fp
)
lw
$
4
,
32
(
$fp
)
move
$
6
,
$
4
sll
$
4
,
$
6
,
3
sll
$
6
,
$
5
,
14
lw
$
7
,
64
(
$fp
)
addu
$
5
,
$
6
,
$
7
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
3
)
l.d
$f2
,
0
(
$
4
)
mul.d
$f0
,
$f0
,
$f2
s.d
$f0
,
0
(
$
2
)
$L238
:
lw
$
3
,
32
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L236
$L237
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
56
(
$fp
)
subu
$
3
,
$
2
,
2
sw
$
3
,
32
(
$fp
)
$L240
:
lw
$
2
,
32
(
$fp
)
lw
$
3
,
60
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L241
$L243
:
lw
$
3
,
56
(
$fp
)
subu
$
2
,
$
3
,
1
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
36
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
14
lw
$
4
,
76
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
32
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
5
,
$
4
,
8
addu
$
3
,
$
3
,
$
5
lw
$
4
,
32
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
14
addu
$
5
,
$
4
,
16384
lw
$
6
,
64
(
$fp
)
addu
$
4
,
$
5
,
$
6
lw
$
5
,
32
(
$fp
)
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
addu
$
7
,
$
4
,
$
5
li
$
4
,
0x00000800
#
2048
sw
$
4
,
16
(
$sp
)
move
$
4
,
$
2
move
$
5
,
$
3
li
$
6
,
0x00000001
#
1
jal
Ddot
lw
$
3
,
36
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
76
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L242
:
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L240
$L241
:
.
set
noreorder
nop
.
set
reorder
lw
$
2
,
60
(
$fp
)
subu
$
3
,
$
2
,
1
sw
$
3
,
32
(
$fp
)
$L244
:
lw
$
2
,
32
(
$fp
)
bgez
$
2
,
$L247
j
$L245
$L247
:
lw
$
2
,
56
(
$fp
)
lw
$
3
,
60
(
$fp
)
subu
$
2
,
$
2
,
$
3
lw
$
3
,
36
(
$fp
)
move
$
4
,
$
3
sll
$
3
,
$
4
,
14
lw
$
4
,
76
(
$fp
)
addu
$
3
,
$
3
,
$
4
lw
$
4
,
60
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
addu
$
3
,
$
3
,
$
4
lw
$
4
,
60
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
14
lw
$
5
,
64
(
$fp
)
addu
$
4
,
$
4
,
$
5
lw
$
5
,
32
(
$fp
)
move
$
6
,
$
5
sll
$
5
,
$
6
,
3
addu
$
7
,
$
4
,
$
5
li
$
4
,
0x00000800
#
2048
sw
$
4
,
16
(
$sp
)
move
$
4
,
$
2
move
$
5
,
$
3
li
$
6
,
0x00000001
#
1
jal
Ddot
lw
$
3
,
36
(
$fp
)
lw
$
2
,
32
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
36
(
$fp
)
lw
$
3
,
32
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
76
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f2
,
0
(
$
3
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
0
(
$
2
)
$L246
:
lw
$
3
,
32
(
$fp
)
subu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
32
(
$fp
)
j
$L244
$L245
:
$L206
:
lw
$
3
,
36
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
36
(
$fp
)
j
$L204
$L205
:
$L203
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
52
(
$sp
)
lw
$fp
,
48
(
$sp
)
addu
$sp
,
$sp
,
56
j
$
31
.
end
Solver
.
loc
1
919
.
ent
Storer
Storer
:
.
frame
$fp
,
80
,
$
31
#
vars
=
16
,
regs
=
2
/
0
,
args
=
56
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
80
sw
$
31
,
76
(
$sp
)
sw
$fp
,
72
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
80
(
$fp
)
sw
$
5
,
84
(
$fp
)
sw
$
6
,
88
(
$fp
)
sw
$
7
,
92
(
$fp
)
la
$
4
,
$LC32
la
$
5
,
$LC81
jal
fopen
sw
$
2
,
68
(
$fp
)
lw
$
2
,
68
(
$fp
)
bne
$
2
,
$
0
,
$L249
la
$
4
,
$LC82
jal
printf
li
$
4
,
0x00000001
#
1
jal
exit
$L249
:
lw
$
4
,
68
(
$fp
)
la
$
5
,
$LC50
lw
$
6
,
80
(
$fp
)
jal
fprintf
lw
$
4
,
68
(
$fp
)
la
$
5
,
$LC83
jal
fprintf
sw
$
0
,
60
(
$fp
)
$L250
:
lw
$
2
,
60
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L253
j
$L251
$L253
:
lw
$
2
,
60
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
84
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
64
(
$fp
)
$L254
:
lw
$
2
,
60
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
84
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
64
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L255
$L257
:
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
3
,
1
lw
$
4
,
60
(
$fp
)
addu
$
3
,
$
4
,
1
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
88
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
16
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
88
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
16384
l.d
$f0
,
0
(
$
5
)
s.d
$f0
,
24
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
88
(
$fp
)
addu
$
4
,
$
4
,
$
5
li
$
5
,
0x00008000
#
32768
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
32
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
92
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
40
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
92
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
16384
l.d
$f0
,
0
(
$
5
)
s.d
$f0
,
48
(
$sp
)
lw
$
4
,
68
(
$fp
)
la
$
5
,
$LC84
move
$
6
,
$
2
move
$
7
,
$
3
jal
fprintf
$L256
:
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
64
(
$fp
)
j
$L254
$L255
:
$L252
:
lw
$
3
,
60
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
60
(
$fp
)
j
$L250
$L251
:
lw
$
4
,
68
(
$fp
)
la
$
5
,
$LC85
jal
fprintf
sw
$
0
,
60
(
$fp
)
$L258
:
lw
$
2
,
60
(
$fp
)
slt
$
3
,
$
2
,
6
bne
$
3
,
$
0
,
$L261
j
$L259
$L261
:
lw
$
2
,
60
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
84
(
$fp
)
addu
$
2
,
$
2
,
$
3
lw
$
3
,
0
(
$
2
)
sw
$
3
,
64
(
$fp
)
$L262
:
lw
$
2
,
60
(
$fp
)
move
$
3
,
$
2
sll
$
2
,
$
3
,
3
lw
$
3
,
84
(
$fp
)
addu
$
2
,
$
2
,
$
3
addu
$
3
,
$
2
,
4
lw
$
2
,
64
(
$fp
)
lw
$
3
,
0
(
$
3
)
slt
$
2
,
$
3
,
$
2
bne
$
2
,
$
0
,
$L263
$L265
:
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
3
,
1
lw
$
4
,
60
(
$fp
)
addu
$
3
,
$
4
,
1
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
96
(
$fp
)
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
16
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
96
(
$fp
)
addu
$
4
,
$
4
,
$
5
addu
$
5
,
$
4
,
16384
l.d
$f0
,
0
(
$
5
)
s.d
$f0
,
24
(
$sp
)
lw
$
4
,
64
(
$fp
)
move
$
5
,
$
4
sll
$
4
,
$
5
,
3
lw
$
5
,
96
(
$fp
)
addu
$
4
,
$
4
,
$
5
li
$
5
,
0x00008000
#
32768
addu
$
4
,
$
4
,
$
5
l.d
$f0
,
0
(
$
4
)
s.d
$f0
,
32
(
$sp
)
lw
$
4
,
68
(
$fp
)
la
$
5
,
$LC86
move
$
6
,
$
2
move
$
7
,
$
3
jal
fprintf
$L264
:
lw
$
3
,
64
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
64
(
$fp
)
j
$L262
$L263
:
$L260
:
lw
$
3
,
60
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
60
(
$fp
)
j
$L258
$L259
:
lw
$
4
,
68
(
$fp
)
jal
fclose
$L248
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
76
(
$sp
)
lw
$fp
,
72
(
$sp
)
addu
$sp
,
$sp
,
80
j
$
31
.
end
Storer
.
loc
1
972
.
ent
Verify
Verify
:
.
frame
$fp
,
72
,
$
31
#
vars
=
48
,
regs
=
2
/
0
,
args
=
16
,
extra
=
0
.
mask
0xc0000000
,-
4
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
72
sw
$
31
,
68
(
$sp
)
sw
$fp
,
64
(
$sp
)
move
$fp
,
$sp
sw
$
4
,
72
(
$fp
)
sw
$
5
,
76
(
$fp
)
sw
$
6
,
80
(
$fp
)
sw
$
7
,
84
(
$fp
)
dsz
16
(
$fp
)
sw
$
0
,
56
(
$fp
)
$L267
:
lw
$
2
,
56
(
$fp
)
slt
$
3
,
$
2
,
3
bne
$
3
,
$
0
,
$L270
j
$L268
$L270
:
sw
$
0
,
48
(
$fp
)
$L271
:
lw
$
2
,
48
(
$fp
)
lw
$
3
,
72
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L274
j
$L272
$L274
:
lw
$
3
,
48
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
56
(
$fp
)
lw
$
3
,
48
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
80
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
sw
$
0
,
52
(
$fp
)
$L275
:
lw
$
2
,
52
(
$fp
)
lw
$
3
,
48
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L278
j
$L276
$L278
:
lw
$
3
,
48
(
$fp
)
lw
$
2
,
52
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
52
(
$fp
)
lw
$
3
,
48
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
76
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
3
)
s.d
$f0
,
0
(
$
2
)
$L277
:
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
52
(
$fp
)
j
$L275
$L276
:
$L273
:
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
48
(
$fp
)
j
$L271
$L272
:
mtc1
$
0
,
$f0
mtc1
$
0
,
$f1
s.d
$f0
,
40
(
$fp
)
s.d
$f0
,
32
(
$fp
)
sw
$
0
,
52
(
$fp
)
$L279
:
lw
$
2
,
52
(
$fp
)
lw
$
3
,
72
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L282
j
$L280
$L282
:
lw
$
3
,
56
(
$fp
)
lw
$
2
,
52
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
84
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f0
,
0
(
$
2
)
s.d
$f0
,
24
(
$fp
)
sw
$
0
,
48
(
$fp
)
$L283
:
lw
$
2
,
48
(
$fp
)
lw
$
3
,
72
(
$fp
)
slt
$
2
,
$
2
,
$
3
bne
$
2
,
$
0
,
$L286
j
$L284
$L286
:
lw
$
3
,
52
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
lw
$
4
,
56
(
$fp
)
lw
$
3
,
48
(
$fp
)
move
$
5
,
$
3
sll
$
3
,
$
5
,
3
sll
$
5
,
$
4
,
14
lw
$
6
,
88
(
$fp
)
addu
$
4
,
$
5
,
$
6
addu
$
3
,
$
3
,
$
4
l.d
$f0
,
0
(
$
2
)
l.d
$f2
,
0
(
$
3
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
24
(
$fp
)
sub.d
$f0
,
$f2
,
$f0
s.d
$f0
,
24
(
$fp
)
lw
$
3
,
52
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
32
(
$fp
)
c.lt.d
$f0
,
$f2
bc1f
$L287
l.d
$f0
,
32
(
$fp
)
j
$L288
$L287
:
lw
$
3
,
52
(
$fp
)
lw
$
2
,
48
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
76
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
$L288
:
s.d
$f0
,
32
(
$fp
)
$L285
:
lw
$
3
,
48
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
48
(
$fp
)
j
$L283
$L284
:
lw
$
3
,
56
(
$fp
)
lw
$
2
,
52
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
88
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
l.d
$f2
,
40
(
$fp
)
c.lt.d
$f0
,
$f2
bc1f
$L289
l.d
$f0
,
40
(
$fp
)
j
$L290
$L289
:
lw
$
3
,
56
(
$fp
)
lw
$
2
,
52
(
$fp
)
move
$
4
,
$
2
sll
$
2
,
$
4
,
3
sll
$
4
,
$
3
,
14
lw
$
5
,
88
(
$fp
)
addu
$
3
,
$
4
,
$
5
addu
$
2
,
$
2
,
$
3
l.d
$f2
,
0
(
$
2
)
abs.d
$f0
,
$f2
$L290
:
s.d
$f0
,
40
(
$fp
)
l.d
$f2
,
24
(
$fp
)
abs.d
$f0
,
$f2
l.d
$f2
,
16
(
$fp
)
add.d
$f0
,
$f2
,
$f0
s.d
$f0
,
16
(
$fp
)
$L281
:
lw
$
3
,
52
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
52
(
$fp
)
j
$L279
$L280
:
$L269
:
lw
$
3
,
56
(
$fp
)
addu
$
2
,
$
3
,
1
move
$
3
,
$
2
sw
$
3
,
56
(
$fp
)
j
$L267
$L268
:
l.d
$f0
,
32
(
$fp
)
l.d
$f2
,
40
(
$fp
)
mul.d
$f0
,
$f0
,
$f2
l.d
$f2
,
16
(
$fp
)
div.d
$f0
,
$f2
,
$f0
s.d
$f0
,
16
(
$fp
)
l.d
$f0
,
16
(
$fp
)
l.d
$f2
,
$LC87
c.lt.d
$f2
,
$f0
bc1f
$L291
la
$
4
,
$LC88
dlw
$
6
,
16
(
$fp
)
jal
printf
move
$
2
,
$
0
j
$L266
$L291
:
li
$
2
,
0x00000001
#
1
j
$L266
$L266
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$
31
,
68
(
$sp
)
lw
$fp
,
64
(
$sp
)
addu
$sp
,
$sp
,
72
j
$
31
.
end
Verify
.
loc
1
1120
.
ent
Ddot
Ddot
:
.
frame
$fp
,
8
,
$
31
#
vars
=
0
,
regs
=
1
/
0
,
args
=
0
,
extra
=
0
.
mask
0x40000000
,-
8
.
fmask
0x00000000
,
0
subu
$sp
,
$sp
,
8
sw
$fp
,
0
(
$sp
)
move
$fp
,
$sp
move
$
2
,
$
6
move
$
6
,
$
7
lw
$
3
,
24
(
$fp
)
mtc1
$
0
,
$f2
mtc1
$
0
,
$f3
$L293
:
subu
$
4
,
$
4
,
1
li
$
7
,-
1
#
0xffffffff
bne
$
4
,
$
7
,
$L295
j
$L294
$L295
:
l.d
$f0
,
0
(
$
5
)
l.d
$f4
,
0
(
$
6
)
mul.d
$f0
,
$f0
,
$f4
add.d
$f2
,
$f2
,
$f0
move
$
7
,
$
2
sll
$
8
,
$
7
,
3
addu
$
5
,
$
5
,
$
8
move
$
7
,
$
3
sll
$
8
,
$
7
,
3
addu
$
6
,
$
6
,
$
8
j
$L293
$L294
:
mov.d
$f0
,
$f2
j
$L292
$L292
:
move
$sp
,
$fp
#
sp
not
trusted
here
lw
$fp
,
0
(
$sp
)
addu
$sp
,
$sp
,
8
j
$
31
.
end
Ddot
\ No newline at end of file
report/report.tex
View file @
405dc7a5
...
...
@@ -120,13 +120,27 @@ We now add the instruction above the first use, and write the result in a new
variable. Then all occurrences of this expression can be replaced by a move of
from new variable into the original destination variable of the instruction.
This is a less efficient method then the
dag
, but because the basic blocks are
This is a less efficient method then the
DAG
, but because the basic blocks are
in general not very large and the execution time of the optimizer is not a
primary concern, this is not a big problem.
\subsubsection
*
{
Fold constants
}
\subsubsection
*
{
Constant folding
}
Another optimization is to do constant folding. Constant folding is replacing
a expensive step like addition with a more simple step like loading a constant.
Of course, this is not always possible. It is possible in cases where you apply
an operation on two constants, or a constant and a variable of which you know
for sure that it always has a certain value at that point. For example:
\begin
{
verbatim
}
li
$
regA, 1 li
$
regA,
1
addu
$
regB,
$
regA,
2
-
> li
$
regB, 3
\end{verbatim}
Of course, if
\texttt
{
\$
regA
}
is not used after this, it can be removed, which
will be done by the dead code elimination.
One problem we encountered with this is that the use of a
\texttt
{
li
}
is that
the program often also stores this in the memory, so we had to check whether
this was necessary here as well.
\subsubsection*
{
Copy propagation
}
...
...
@@ -153,12 +167,11 @@ of the move operation.
An example would be the following:
\begin{verbatim}
move
$
regA,
$
regB move
$
regA,
$
regB
... ...
Code not writing
$
regA, -> ...
$
regB ...
... ...
addu
$
regC,
$
regA, ... addu
$
regC,
$
regB, ...
move
$
regA,
$
regB move
$
regA,
$
regB
... ...
Code not writing
$
regA,
$
regB -> ...
... ...
addu
$
regC,
$
regA, ... addu
$
regC,
$
regB, ...
\end{verbatim}
This code shows that
\texttt
{
\$
regA
}
is replaced with
\texttt
{
\$
regB
}
. This
way, the move instruction might have become useless, and it will then be
...
...
@@ -166,7 +179,18 @@ removed by the dead code elimination.
\subsubsection*
{
Algebraic transformations
}
Some expression can easily be replaced with more simple once if you look at
what they are saying algebraically. An example is the statement
$
x
=
y
+
0
$
, or
in Assembly
\texttt
{
addu
\$
1,
\$
2, 0
}
. This can easily be changed into
$
x
=
y
$
or
\texttt
{
move
\$
1,
\$
2
}
.
Another case is the multiplication with a power of two. This can be done way
more efficiently by shifting left a number of times. An example:
\texttt
{
mult
\$
regA,
\$
regB, 4 -> sll
\$
regA,
\$
regB, 2
}
. We perform this
optimization for any multiplication with a power of two.
There are a number of such cases, all of which are once again stated in
appendix
\ref
{
opt
}
.
\section
{
Implementation
}
...
...
@@ -203,7 +227,7 @@ The optimizations are done in two different steps. First the global
optimizations are performed, which are only the optimizations on branch-jump
constructions. This is done repeatedly until there are no more changes.
After all possible global optimizations are done, the program is sep
e
rated into
After all possible global optimizations are done, the program is sep
a
rated into
basic blocks. The algorithm to do this is described earlier, and means all
jump and branch instructions are called leaders, as are their targets. A basic
block then goes from leader to leader.
...
...
@@ -215,7 +239,7 @@ steps can be done to optimize something.
\subsection
{
Writing
}
Once all the optimizations have been done, the IR needs to be rewritten into
Assembly code, so the xgcc crosscompiler can make binary code out of it.
Assembly code, so the xgcc cross
compiler can make binary code out of it.
The writer expects a list of statements, so first the blocks have to be
concatenated again into a list. After this is done, the list is passed on to
...
...
src/dataflow.py
View file @
405dc7a5
#
from copy import copy
from
copy
import
copy
from
statement
import
Block
...
...
@@ -25,40 +25,85 @@ class BasicBlock(Block):
if
block
not
in
self
.
dominates
:
self
.
dominates
.
append
(
block
)
block
.
dominated_by
.
append
(
self
)
# def get_gen(self):
# for s in self.statements:
# if s.is_arith():
# self.gen_set.add(s[0])
# print 'added: ', s[0]
#
# return self.gen_set
#
# def get_kill(self):
## if self.edges_from != []:
#
# for backw in self.edges_from:
# self.kill_set = self.gen_set & backw.kill_set
#
# self.kill_set = self.kill_set - self.get_gen()
# print 'get_kill_set', self.kill_set
# return self.kill_set
# def get_in(self):
# for backw in self.edges_from:
# self.in_set = self.in_set | backw.out_set
# print 'in_set', self.in_set
# return self.in_set
# def get_out(self):
# print 'gen_set', self.gen_set
# print 'get_in', self.get_in()
# print 'get_kill', self.get_kill()
# self.out_set = self.gen_set | (self.get_in() - self.get_kill())
def
create_gen_kill
(
self
,
defs
):
used
=
set
()
self_defs
=
{}
# Get the last of each definition series and put in in the `def' set
self
.
gen_set
=
set
()
for
s
in
reversed
(
self
):
for
reg
in
s
.
get_def
():
if
reg
not
in
self_defs
:
print
'Found def:'
,
s
self_defs
[
reg
]
=
s
.
sid
self
.
gen_set
.
add
(
s
.
sid
)
# Generate kill set
self
.
kill_set
=
set
()
for
reg
,
statement_ids
in
defs
.
iteritems
():
if
reg
in
self_defs
:
add
=
statement_ids
-
set
([
self_defs
[
reg
]])
else
:
add
=
statement_ids
self
.
kill_set
|=
add
def
defs
(
blocks
):
# Collect definitions of all registers
defs
=
{}
for
b
in
blocks
:
for
s
in
b
:
for
reg
in
s
.
get_def
():
if
reg
not
in
defs
:
defs
[
reg
]
=
set
([
s
.
sid
])
else
:
defs
[
reg
].
add
(
s
.
sid
)
return
defs
def
reaching_definitions
(
blocks
):
"""Generate the `in' and `out' sets of the given blocks using the iterative
algorithm from the slides."""
defs
=
defs
(
blocks
)
for
b
in
blocks
:
b
.
create_gen_kill
(
defs
)
b
.
out_set
=
b
.
gen_set
change
=
True
while
change
:
change
=
False
for
b
in
blocks
:
b
.
in_set
=
set
()
for
pred
in
b
.
edges_from
:
b
.
in_set
|=
pred
.
out_set
oldout
=
copy
(
p
.
out_set
)
p
.
out_set
=
b
.
gen_set
|
(
b
.
in_set
-
b
.
kill_set
)
if
b
.
out_set
!=
oldout
:
change
=
True
def
pred
(
n
,
known
=
[]):
"""Recursively find all predecessors of a node."""
direct
=
filter
(
lambda
b
:
b
not
in
known
,
n
.
edges_from
)
p
=
copy
(
direct
)
for
ancestor
in
direct
:
p
+=
pred
(
ancestor
,
direct
)
return
p
def
find_leaders
(
statements
):
"""Determine the leaders, which are:
...
...
src/optimize/__init__.py
View file @
405dc7a5
...
...
@@ -3,7 +3,7 @@ from src.dataflow import find_basic_blocks
from
redundancies
import
remove_redundant_jumps
,
move_1
,
move_2
,
move_3
,
\
move_4
,
load
,
shift
,
add
from
advanced
import
eliminate_common_subexpressions
,
fold_constants
,
\
copy_propagation
,
algebraic_transformations
copy_propagation
,
algebraic_transformations
,
eliminate_dead_code
def
remove_redundancies
(
block
):
...
...
@@ -32,7 +32,8 @@ def optimize_block(block):
|
eliminate_common_subexpressions
(
block
)
\
|
fold_constants
(
block
)
\
|
copy_propagation
(
block
)
\
|
algebraic_transformations
(
block
):
|
algebraic_transformations
(
block
)
\
|
eliminate_dead_code
(
block
):
pass
...
...
@@ -63,6 +64,6 @@ def optimize(statements, verbose=0):
print
'After global optimization: %d'
%
g
print
'After basic blocks optimization: %d'
%
b
print
'Optimization: %d (%d%%)'
\
%
(
b
-
o
,
int
((
b
-
o
)
/
float
(
o
)
*
100
))
%
(
o
-
b
,
int
((
o
-
b
)
/
float
(
b
)
*
100
))
return
opt_blocks
src/optimize/advanced.py
View file @
405dc7a5
...
...
@@ -2,22 +2,31 @@ from src.statement import Statement as S
from
math
import
log
def
reg_dead_in
(
var
,
context
):
"""Check if a register is `dead' in a given list of statements."""
# TODO: Finish
for
s
in
context
:
if
s
.
defines
(
var
)
or
s
.
uses
(
var
):
def
reg_can_be_used_in
(
reg
,
block
,
start
,
end
):
"""Check if a register addres safely be used in a block section using local
dataflow analysis."""
# Check if the register used or defined in the block section
for
s
in
block
[
start
:
end
]:
if
s
.
uses
(
reg
)
or
s
.
defines
(
reg
):
return
False
# Check if the register is used inside the block after the specified
# section, without having been re-assigned first
for
s
in
block
[
end
:]:
if
s
.
uses
(
reg
):
return
False
elif
s
.
defines
(
reg
):
return
True
return
True
def
find_free_reg
(
context
):
def
find_free_reg
(
block
,
start
,
end
):
"""Find a temporary register that is free in a given list of statements."""
for
i
in
xrange
(
8
):
tmp
=
'$
t
%d'
%
i
for
i
in
xrange
(
8
,
16
):
tmp
=
'$%d'
%
i
if
reg_
dead_in
(
tmp
,
context
):
if
reg_
can_be_used_in
(
tmp
,
block
,
start
,
end
):
return
tmp
raise
Exception
(
'No temporary register is available.'
)
...
...
@@ -31,57 +40,60 @@ def eliminate_common_subexpressions(block):
y = u
The algorithm used is as follows:
- Traverse through the statements
in reverse order
.
- Traverse through the statements.
- If the statement can be possibly be eliminated, walk further collecting
all other occurrences of the expression until one of the arguments is
assigned in a statement, or the start of the block has been reached.
- If one or more occurrences were
foun
d, insert the expression with a new
destination address before the last
foun
d occurrence and change all
- If one or more occurrences were
change
d, insert the expression with a new
destination address before the last
change
d occurrence and change all
occurrences to a move instruction from that address.
"""
found
=
False
block
.
reverse_statements
()
changed
=
False
while
not
block
.
end
():
s
=
block
.
read
()
if
s
.
is_arith
():
pointer
=
block
.
pointer
last
=
False
new_reg
=
False
occurrences
=
[
pointer
-
1
]
args
=
s
[
1
:]
# Collect similar statements
while
not
block
.
end
():
s2
=
block
.
read
()
if
not
s2
.
is_command
():
continue
# Stop if one of the arguments is assigned
if
len
(
s2
)
and
s2
[
0
]
in
args
:
break
# Replace a similar expression by a move instruction
if
s2
.
name
==
s
.
name
and
s2
[
1
:]
==
args
:
if
not
new_reg
:
new_reg
=
find_free_reg
(
block
[:
pointer
])
occurrences
.
append
(
block
.
pointer
-
1
)
block
.
replace
(
1
,
[
S
(
'command'
,
'move'
,
s2
[
0
],
new_reg
)])
last
=
block
.
pointer
if
len
(
occurrences
)
>
1
:
new_reg
=
find_free_reg
(
block
,
occurrences
[
0
],
occurrences
[
-
1
])
# Reset pointer to and continue from the original statement
block
.
pointer
=
pointer
# Replace all occurrences with a move statement
for
occurrence
in
occurrences
:
rd
=
block
[
occurrence
][
0
]
block
.
replace
(
1
,
[
S
(
'command'
,
'move'
,
rd
,
new_reg
)],
\
start
=
occurrence
)
# Insert the calculation before the original with the new
# destination address
block
.
insert
(
S
(
'command'
,
s
.
name
,
*
([
new_reg
]
+
args
)),
\
index
=
occurrences
[
0
])
if
last
:
# Insert an additional expression with a new destination address
block
.
insert
(
S
(
'command'
,
s
.
name
,
*
([
new_reg
]
+
args
)),
last
)
changed
=
True
# Replace the original expression with a move statement
block
.
replace
(
1
,
[
S
(
'command'
,
'move'
,
s
[
0
],
new_reg
)])
found
=
True
# Reset pointer to continue from the original statement
block
.
pointer
=
pointer
block
.
reverse_statements
()
return
changed
return
found
def
to_hex
(
value
):
"""Create the hexadecimal string of an integer."""
...
...
@@ -103,7 +115,7 @@ def fold_constants(block):
- When a variable is used, the following happens:
lw $reg, VAR -> register[$reg] = constants[VAR]
"""
foun
d
=
False
change
d
=
False
# Variable values
constants
=
{}
...
...
@@ -125,7 +137,7 @@ def fold_constants(block):
if
reg_from
in
register
:
# Other value is also known, copy its value
register
[
reg_to
]
=
register
[
reg_
to
]
register
[
reg_to
]
=
register
[
reg_
from
]
else
:
# Other value is unknown, delete the value
del
register
[
reg_to
]
...
...
@@ -136,8 +148,9 @@ def fold_constants(block):
# Usage of variable with constant value
register
[
s
[
0
]]
=
constants
[
s
[
1
]]
elif
s
.
name
in
[
'addu'
,
'subu'
,
'mult'
,
'div'
]:
# TODO: implement 'mult' optimization
# Calculation with constants
rd
,
rs
,
rt
=
s
rd
,
rs
,
rt
=
s
[
0
],
s
[
1
],
s
[
2
]
rs_known
=
rs
in
register
rt_known
=
rt
in
register
...
...
@@ -162,23 +175,23 @@ def fold_constants(block):
block
.
replace
(
1
,
[
S
(
'command'
,
'li'
,
rd
,
result
)])
register
[
rd
]
=
result
foun
d
=
True
change
d
=
True
elif
rt_known
:
# c = 10 -> b = a + 10
# b = c + a
s
[
2
]
=
register
[
rt
]
foun
d
=
True
elif
rs_known
and
s
.
name
in
[
'addu'
,
'mult'
]
:
change
d
=
True
elif
rs_known
and
s
.
name
==
'addu'
:
# a = 10 -> b = c + 10
# b = c + a
s
[
1
]
=
rt
s
[
2
]
=
register
[
rs
]
foun
d
=
True
change
d
=
True
elif
len
(
s
)
and
s
[
0
]
in
register
:
# Known register is overwritten, remove its value
del
register
[
s
[
0
]]
return
foun
d
return
change
d
def
copy_propagation
(
block
):
...
...
@@ -210,12 +223,15 @@ def copy_propagation(block):
for
i
in
xrange
(
len
(
moves_to
)):
if
moves_to
[
i
]
==
s
[
0
]:
moves_from
[
i
]
=
s
[
1
]
break
elif
len
(
s
)
==
3
and
s
[
0
]
in
moves_to
:
# The result gets overwritten, so remove the data from the list.
continue
elif
(
len
(
s
)
==
3
or
s
.
is_command
(
'mlfo'
)
or
s
.
is_load
())
\
and
(
s
[
0
]
in
moves_to
or
s
[
0
]
in
moves_from
):
# One of the registers gets overwritten, so remove the data from
# the list.
i
=
0
while
i
<
len
(
moves_to
):
if
moves_to
[
i
]
==
s
[
0
]:
if
moves_to
[
i
]
==
s
[
0
]
or
moves_to
[
i
]
==
s
[
1
]
:
del
moves_to
[
i
]
del
moves_from
[
i
]
else
:
...
...
@@ -226,11 +242,11 @@ def copy_propagation(block):
for
i
in
xrange
(
len
(
moves_to
)):
if
s
[
1
]
==
moves_to
[
i
]:
s
[
1
]
=
moves_from
[
i
]
break
continue
if
s
[
2
]
==
moves_to
[
i
]:
s
[
2
]
=
moves_from
[
i
]
break
continue
changed
=
True
...
...
@@ -239,7 +255,7 @@ def copy_propagation(block):
def
algebraic_transformations
(
block
):
"""
Change ineffective or useless algebraic
transformat
ions. Handled are:
Change ineffective or useless algebraic
express
ions. Handled are:
- x = y + 0 -> x = y
- x = y - 0 -> x = y
- x = y * 1 -> x = y
...
...
@@ -254,17 +270,62 @@ def algebraic_transformations(block):
if
(
s
.
is_command
(
'addu'
)
or
s
.
is_command
(
'subu'
))
and
s
[
2
]
==
0
:
block
.
replace
(
1
,
[
S
(
'command'
,
'move'
,
s
[
0
],
s
[
1
])])
changed
=
True
elif
s
.
is_command
(
'mult'
)
and
s
[
2
]
==
1
:
block
.
replace
(
1
,
[
S
(
'command'
,
'move'
,
s
[
0
],
s
[
1
])])
changed
=
True
elif
s
.
is_command
(
'mult'
)
and
s
[
2
]
==
0
:
block
.
replace
(
1
,
[
S
(
'command'
,
'li'
,
'$1'
,
to_hex
(
0
))])
changed
=
True
elif
s
.
is_command
(
'mult'
):
shift_amount
=
log
(
s
[
2
],
2
)
if
shift_amount
.
is_integer
():
new_command
=
S
(
'command'
,
'sll'
,
s
[
0
],
s
[
1
],
shift_amount
)
block
.
replace
(
1
,
[
new_command
])
changed
=
True
mflo
=
block
.
peek
()
if
mflo
.
is_command
(
'mflo'
):
if
s
[
1
]
==
1
:
block
.
replace
(
2
,
[
S
(
'command'
,
'move'
,
mflo
[
0
],
s
[
0
])])
changed
=
True
continue
elif
s
[
1
]
==
0
:
block
.
replace
(
2
,
[
S
(
'command'
,
'li'
,
'$1'
,
to_hex
(
0
))])
changed
=
True
continue
shift_amount
=
log
(
s
[
1
],
2
)
if
shift_amount
.
is_integer
():
new_command
=
S
(
'command'
,
'sll'
,
\
mflo
[
0
],
s
[
0
],
\
int
(
shift_amount
))
block
.
replace
(
2
,
[
new_command
])
changed
=
True
return
changed
def
eliminate_dead_code
(
block
):
"""
Dead code elimination:
TODO: example...
The algorithm used is as follows:
- Traverse through the statements in reverse order.
- If the statement definition is dead, remove it. A variable is dead if it
is not used in the rest of the block, and is not in the `out' set of the
block.
"""
# TODO: Finish
changed
=
False
block
.
reverse_statements
()
unused
=
set
()
while
not
block
.
end
():
s
=
block
.
read
()
for
reg
in
s
.
get_def
():
if
reg
in
unused
:
# Statement is redefined later, so this statement is useless
s
.
remove
=
True
#print 'reg %s is in %s, remove:' % (reg, unused), \
# block.pointer - 1, s
else
:
unused
.
add
(
reg
)
unused
-=
set
(
s
.
get_use
())
block
.
apply_filter
(
lambda
s
:
not
hasattr
(
s
,
'remove'
))
block
.
reverse_statements
()
return
changed
src/statement.py
View file @
405dc7a5
...
...
@@ -2,12 +2,18 @@ import re
class
Statement
:
sid
=
1
def
__init__
(
self
,
stype
,
name
,
*
args
,
**
kwargs
):
self
.
stype
=
stype
self
.
name
=
name
self
.
args
=
list
(
args
)
self
.
options
=
kwargs
# Assign a unique ID to each satement
self
.
sid
=
Statement
.
sid
Statement
.
sid
+=
1
def
__getitem__
(
self
,
n
):
"""Get an argument."""
return
self
.
args
[
n
]
...
...
@@ -26,8 +32,8 @@ class Statement:
return
len
(
self
.
args
)
def
__str__
(
self
):
# pragma: nocover
return
'<Statement type=%s name=%s args=%s>'
\
%
(
self
.
stype
,
self
.
name
,
self
.
args
)
return
'<Statement
sid=%d
type=%s name=%s args=%s>'
\
%
(
self
.
s
id
,
self
.
s
type
,
self
.
name
,
self
.
args
)
def
__repr__
(
self
):
# pragma: nocover
return
str
(
self
)
...
...
@@ -62,16 +68,21 @@ class Statement:
def
is_shift
(
self
):
"""Check if the statement is a shift operation."""
return
self
.
is_command
()
and
re
.
match
(
'^s(ll|
la|
rl|ra)$'
,
self
.
name
)
return
self
.
is_command
()
and
re
.
match
(
'^s(ll|rl|ra)$'
,
self
.
name
)
def
is_load
(
self
):
"""Check if the statement is a load instruction."""
return
self
.
is_command
()
and
self
.
name
in
[
'lw'
,
'dlw'
,
'l.s'
,
'l.d'
]
return
self
.
is_command
()
and
self
.
name
in
[
'lw'
,
'li'
,
'dlw'
,
'l.s'
,
\
'l.d'
]
def
is_arith
(
self
):
"""Check if the statement is an arithmetic operation."""
return
self
.
is_command
()
\
and
re
.
match
(
'^(add|sub|mult|div|abs|neg)(u|
\
.d)?$
'
, self.name)
and
re
.
match
(
'^s(ll|rl|ra)'
+
'|(mfhi|mflo|abs|neg|and|[xn]?or)'
+
'|(add|sub|slt)u?'
+
'|(add|sub|mult|div|abs|neg|sqrt|c)
\
.[sd]$
'
,
\
self.name)
def is_monop(self):
"""Check if the statement is an unary operation."""
...
...
@@ -80,23 +91,92 @@ class Statement:
def is_binop(self):
"""Check if the statement is an binary operation."""
return self.is_command() and len(self) == 3 and not self.is_jump()
def is_load_non_immediate(self):
"""Check if the statement is a load statement."""
return self.is_command()
\
and re.match('
^
l
(
w
|
a
|
b
|
bu
|
\
.
d
|
\
.
s
)
|
dlw
$
',
\
self.name)
def is_logical(self):
"""Check if the statement is a logical operator."""
return self.is_command() and re.match('
^
(
xor
|
or
|
and
)
i
?$
', self.name)
def is_double_aritmethic(self):
"""Check if the statement is a arithmetic .d operator."""
return self.is_command() and
\
re.match('
^
(
add
|
sub
|
div
|
mul
)
\
.
d
$
', self.name)
def is_double_unary(self):
"""Check if the statement is a unary .d operator."""
return self.is_command() and
\
re.match('
^
(
abs
|
neg
|
mov
)
\
.
d
$
', self.name)
def is_move_from_spec(self):
"""Check if the statement is a move from the result register."""
return self.is_command() and self.name in ['
mflo
', '
mthi
']
def is_set_if_less(self):
"""Check if the statement is a shift if less then."""
return self.is_command() and self.name in ['
slt
', '
sltu
']
def is_convert(self):
"""Check if the statement is a convert operator."""
return self.is_command() and re.match('
^
cvt
\
.[
a
-
z
\
.]
*
$
', self.name)
def is_truncate(self):
"""Check if the statement is a convert operator."""
return self.is_command() and re.match('
^
trunc
\
.[
a
-
z
\
.]
*
$
', self.name)
def jump_target(self):
"""Get the jump target of this statement."""
if not self.is_jump():
raise Exception('
Command
"%s"
has
no
jump
target
' % self.name)
return self[-1]
def get_def(self):
"""Get the variable that this statement defines, if any."""
instr = ['
move
', '
addu
', '
subu
', '
li
', '
mtc1
', '
dmfc1
']
if self.is_load_non_immediate() or self.is_arith()
\
or self.is_logical() or self.is_double_arithmetic()
\
or self.is_move_from_spec() or self.is_double_unary()
\
or self.is_set_if_less() or self.is_convert()
\
or self.is_truncate() or self.is_load()
\
or (self.is_command and self.name in instr):
return self[0]
return []
def get_use(self):
# TODO: Finish with ALL the available commands!
use = []
if self.is_binop():
use += self[1:]
elif self.is_command('
move
'):
use.append(self[1])
elif self.is_command('
lw
', '
sb
', '
sw
', '
dsw
', '
s
.
s
', '
s
.
d
'):
m = re.match('
^
\
d
+
\
(([
^
)]
+
)
\
)
$
', self[1])
if m:
use.append(m.group(1))
# '
sw
' also uses its first argument
if self.name in ['
sw
', '
dsw
']:
use.append(self[0])
elif len(self) == 2: # FIXME: temporary fix, manually add all commands
use.append(self[1])
return use
def defines(self, reg):
"""Check if this statement defines the given register."""
# TODO: Finish
return (self.is_load() or self.is_arith()) and self[0] == reg
return reg in self.get_def()
def uses(self, reg):
"""Check if this statement uses the given register."""
# TODO: Finish
return (self.is_load() or self.is_arith()) and reg in self[1:]
return reg in self.get_use()
class Block:
...
...
tests/test_dataflow.py
View file @
405dc7a5
...
...
@@ -2,7 +2,7 @@ import unittest
from
src.statement
import
Statement
as
S
from
src.dataflow
import
BasicBlock
as
B
,
find_leaders
,
find_basic_blocks
,
\
generate_flow_graph
,
Dag
,
DagNode
,
DagLeaf
generate_flow_graph
,
Dag
,
DagNode
,
DagLeaf
,
defs
,
reaching_definitions
class
TestDataflow
(
unittest
.
TestCase
):
...
...
@@ -23,12 +23,12 @@ class TestDataflow(unittest.TestCase):
self
.
assertEqual
(
map
(
lambda
b
:
b
.
statements
,
find_basic_blocks
(
s
)),
\
[
B
(
s
[:
2
]).
statements
,
B
(
s
[
2
:
4
]).
statements
,
\
B
(
s
[
4
:]).
statements
])
# def test_get_gen(self):
# b1 = B([S('command', 'add', '$1', '$2', '$3'), \
# S('command', 'add', '$2', '$3', '$4'), \
# S('command', 'add', '$1', '$4', '$5')])
#
#
# self.assertEqual(b1.get_gen(), ['$1', '$2'])
# def test_get_out(self):
...
...
@@ -36,18 +36,18 @@ class TestDataflow(unittest.TestCase):
# S('command', 'add', '$2', '$3', '$4'), \
# S('command', 'add', '$1', '$4', '$5'), \
# S('command', 'j', 'b2')])
#
#
# b2 = B([S('command', 'add', '$3', '$5', '$6'), \
# S('command', 'add', '$1', '$2', '$3'), \
# S('command', 'add', '$6', '$4', '$5')])
#
# S('command', 'add', '$6', '$4', '$5')])
#
# blocks = [b1, b2]
#
# # initialize out[B] = gen[B] for every block
#
# # initialize out[B] = gen[B] for every block
# for block in blocks:
# block.out_set = block.get_gen()
# print 'block.out_set', block.out_set
#
#
# generate_flow_graph(blocks)
# change = True
...
...
@@ -112,6 +112,46 @@ class TestDataflow(unittest.TestCase):
#
# self.assertEqualDag(dag, expect)
def
test_defs
(
self
):
s1
=
S
(
'command'
,
'addu'
,
'$3'
,
'$1'
,
'$2'
)
s2
=
S
(
'command'
,
'addu'
,
'$1'
,
'$3'
,
10
)
s3
=
S
(
'command'
,
'subu'
,
'$3'
,
'$1'
,
5
)
s4
=
S
(
'command'
,
'li'
,
'$4'
,
'0x00000001'
)
block
=
B
([
s1
,
s2
,
s3
,
s4
])
self
.
assertEqual
(
defs
([
block
]),
{
'$3'
:
set
([
s1
.
sid
,
s3
.
sid
]),
'$1'
:
set
([
s2
.
sid
]),
'$4'
:
set
([
s4
.
sid
])
})
#def test_defs(self):
# s1 = S('command', 'add', '$3', '$1', '$2')
# s2 = S('command', 'move', '$1', '$3')
# s3 = S('command', 'move', '$3', '$2')
# s4 = S('command', 'li', '$4', '0x00000001')
# block = B([s1, s2, s3, s4])
# self.assertEqual(defs([block]), {
# '$3': set([s1.sid, s3.sid]),
# '$1': set([s2.sid]),
# '$4': set([s4.sid])
# })
def
test_create_gen_kill_gen
(
self
):
s1
=
S
(
'command'
,
'addu'
,
'$3'
,
'$1'
,
'$2'
)
s2
=
S
(
'command'
,
'addu'
,
'$1'
,
'$3'
,
10
)
s3
=
S
(
'command'
,
'subu'
,
'$3'
,
'$1'
,
5
)
s4
=
S
(
'command'
,
'li'
,
'$4'
,
'0x00000001'
)
block
=
B
([
s1
,
s2
,
s3
,
s4
])
block
.
create_gen_kill
(
defs
([
block
]))
self
.
assertEqual
(
block
.
gen_set
,
set
([
s2
.
sid
,
s3
.
sid
,
s4
.
sid
]))
#def test_get_kill_used(self):
# block = B([S('command', 'move', '$1', '$3'),
# S('command', 'add', '$3', '$1', '$2'),
# S('command', 'move', '$1', '$3'),
# S('command', 'move', '$2', '$3')])
# self.assertEqual(block.get_kill(), set())
def
assertEqualDag
(
self
,
dag1
,
dag2
):
self
.
assertEqual
(
len
(
dag1
.
nodes
),
len
(
dag2
.
nodes
))
...
...
tests/test_optimize_advanced.py
View file @
405dc7a5
...
...
@@ -19,9 +19,9 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_eliminate_common_subexpressions_simple
(
self
):
b
=
B
([
S
(
'command'
,
'addu'
,
'$regC'
,
'$regA'
,
'$regB'
),
S
(
'command'
,
'addu'
,
'$regD'
,
'$regA'
,
'$regB'
)])
e
=
[
S
(
'command'
,
'addu'
,
'$
t0
'
,
'$regA'
,
'$regB'
),
\
S
(
'command'
,
'move'
,
'$regC'
,
'$
t0
'
),
\
S
(
'command'
,
'move'
,
'$regD'
,
'$
t0
'
)]
e
=
[
S
(
'command'
,
'addu'
,
'$
8
'
,
'$regA'
,
'$regB'
),
\
S
(
'command'
,
'move'
,
'$regC'
,
'$
8
'
),
\
S
(
'command'
,
'move'
,
'$regD'
,
'$
8
'
)]
eliminate_common_subexpressions
(
b
)
self
.
assertEqual
(
b
.
statements
,
e
)
...
...
@@ -49,6 +49,20 @@ class TestOptimizeAdvanced(unittest.TestCase):
self
.
foo
,
S
(
'command'
,
'addu'
,
'$3'
,
'$2'
,
'$4'
),
self
.
bar
])
def
test_copy_propagation_other_arg
(
self
):
block
=
B
([
self
.
foo
,
S
(
'command'
,
'move'
,
'$1'
,
'$2'
),
self
.
foo
,
S
(
'command'
,
'addu'
,
'$3'
,
'$4'
,
'$1'
),
self
.
bar
])
self
.
assertTrue
(
copy_propagation
(
block
))
self
.
assertEqual
(
block
.
statements
,
[
self
.
foo
,
S
(
'command'
,
'move'
,
'$1'
,
'$2'
),
self
.
foo
,
S
(
'command'
,
'addu'
,
'$3'
,
'$4'
,
'$2'
),
self
.
bar
])
def
test_copy_propagation_overwrite
(
self
):
block
=
B
([
self
.
foo
,
\
...
...
@@ -125,7 +139,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_algebraic_transforms_mult0
(
self
):
block
=
B
([
self
.
foo
,
S
(
'command'
,
'mult'
,
'$1'
,
'$2'
,
0
),
S
(
'command'
,
'mult'
,
'$2'
,
0
),
S
(
'command'
,
'mflo'
,
'$1'
),
self
.
bar
])
self
.
assertTrue
(
algebraic_transformations
(
block
))
...
...
@@ -135,7 +150,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_algebraic_transforms_mult1
(
self
):
block
=
B
([
self
.
foo
,
S
(
'command'
,
'mult'
,
'$1'
,
'$2'
,
1
),
S
(
'command'
,
'mult'
,
'$2'
,
1
),
S
(
'command'
,
'mflo'
,
'$1'
),
self
.
bar
])
self
.
assertTrue
(
algebraic_transformations
(
block
))
...
...
@@ -145,7 +161,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_algebraic_transforms_mult2
(
self
):
block
=
B
([
self
.
foo
,
S
(
'command'
,
'mult'
,
'$1'
,
'$2'
,
2
),
S
(
'command'
,
'mult'
,
'$2'
,
2
),
S
(
'command'
,
'mflo'
,
'$1'
),
self
.
bar
])
self
.
assertTrue
(
algebraic_transformations
(
block
))
...
...
@@ -155,7 +172,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_algebraic_transforms_mult16
(
self
):
block
=
B
([
self
.
foo
,
S
(
'command'
,
'mult'
,
'$1'
,
'$2'
,
16
),
S
(
'command'
,
'mult'
,
'$2'
,
16
),
S
(
'command'
,
'mflo'
,
'$1'
),
self
.
bar
])
self
.
assertTrue
(
algebraic_transformations
(
block
))
...
...
@@ -165,7 +183,8 @@ class TestOptimizeAdvanced(unittest.TestCase):
def
test_algebraic_transforms_mult3
(
self
):
arguments
=
[
self
.
foo
,
S
(
'command'
,
'mult'
,
'$1'
,
'$2'
,
3
),
S
(
'command'
,
'mult'
,
'$2'
,
3
),
S
(
'command'
,
'mflo'
,
'$1'
),
self
.
bar
]
block
=
B
(
arguments
)
...
...
tests/test_statement.py
View file @
405dc7a5
...
...
@@ -90,6 +90,6 @@ class TestStatement(unittest.TestCase):
self
.
assertFalse
(
S
(
'label'
,
'lw'
).
is_load
())
def
test_is_arith
(
self
):
self
.
assertTrue
(
S
(
'command'
,
'add'
,
'$1'
,
'$2'
,
'$3'
).
is_arith
())
self
.
assertTrue
(
S
(
'command'
,
'add
u
'
,
'$1'
,
'$2'
,
'$3'
).
is_arith
())
self
.
assertFalse
(
S
(
'command'
,
'foo'
).
is_arith
())
self
.
assertFalse
(
S
(
'label'
,
'add'
).
is_arith
())
self
.
assertFalse
(
S
(
'label'
,
'add
u
'
).
is_arith
())
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment