Original

Instruction count
(As reported by the modified version of SPIM)

Optimized Version (register allocation)

Instruction count
(As reported by the modified version of SPIM)

Improvement (%)

Optimized Version
(const propagation + live + peephole)

Instruction count
(As reported by the modified version of SPIM)

Improvement (%)

Input

file1.spim

53

file1.mod

38

28%

file1.mod2

38

28%  (+ 0%)

123

file2.spim

58

file2.mod

19

67%

file2.mod2

19

67%  (+ 0%)

N/A

file3.spim

120

file3.mod

71

41%

file3.mod2

64

47%  (+ 6%)

N/A

file4.spim

97

file4.mod

95

2%

file4.mod2

96

1%  (- 1%)

4,1,9

file5.spim

1344

file5.mod

1293

4%

file5.mod2

1245

7%  (+ 3%)

N/A

array.spim

65

array.mod

35

46%

array.mod2

35

46%  (+ 0%)

N/A

block.spim

40

block.mod

20

50%

block.mod2

20

50%  (+ 0%)

N/A

three.spim

43

three.mod

34

21%

three.mod2

34

21%  (+ 0%)

N/A

expr.spim

40

expr.mod

14

65%

expr.mod2

14

65%  (+ 0%)

N/A

for.spim

237

for.mod

237

0%

for.mod2

234

1%  (+ 1%)

12

io.spim

41

io.mod

40

2%

io.mod2

40

2%  (+ 0%)

123,123

array2.spim

75

array2.mod

45

40%

array2.mod2

45

40%  (+ 0%)

N/A

sort.spim

640

sort.mod

619

3%

sort.mod2

619

3%  (+ 0%)

5,1,32,4,5,6

while.spim

264

while.mod

252

5%

while.mod2

234

11%  (+ 6%)

N/A

sort2.spim

925

sort2.mod

882

5%

sort2.mod2

845

9%  (+ 4%)

5,1,3,2,4,5

strange.spim

281

strange.mod

214

24%

strange.mod2

192

32%  (+ 8%)

30

primes.spim

277,822

primes.mod

263,516

5%

primes.mod2

214795

23%  (+ 18%)

N/A

bigtest.spim

123,561,100
(yes, 123 million)

bigtest.mod

119,571,534

3%

bigtest.mod2

99,677,478

19%  (+ 16%)

199933,220,284,
6,28,8128