Sfoglia il codice sorgente

Added unittest of move-instr optimization.

Jayke Meijer 14 anni fa
parent
commit
4a51527ed0
2 ha cambiato i file con 30 aggiunte e 6 eliminazioni
  1. 0 1
      src/optimize.py
  2. 30 5
      tests/test_optimize.py

+ 0 - 1
src/optimize.py

@@ -13,7 +13,6 @@ def optimize_global(statements):
 
             # mov $regA, $regA          ->  --- remove it
             if s.is_command('move') and s[0] == s[1]:
-                print "Let me fix that", s
                 statements.replace(1, [])
                 continue
 

+ 30 - 5
tests/test_optimize.py

@@ -11,8 +11,8 @@ class TestOptimize(unittest.TestCase):
 
     def test_optimize_global_movaa(self):
         foo = S('command', 'foo')
-        bar = S('command', 'baz')
-        block = B([foo, \
+        bar = S('command', 'bar')
+        block = B([foo,
                    S('command', 'move', '$regA', '$regA'),
                    bar])
         optimize_global(block)
@@ -21,11 +21,36 @@ class TestOptimize(unittest.TestCase):
     def test_optimize_global_movab(self):
         foo = S('command', 'foo')
         move = S('command', 'move', '$regA', '$regB')
-        bar = S('command', 'baz')
-        block = B([foo, \
+        bar = S('command', 'bar')
+        block = B([foo,
                    move,
                    bar])
         optimize_global(block)
         self.assertEquals(block.statements, [foo, move, bar])
         
-    def 
+    def test_optimize_global_movinst(self):
+        foo = S('command', 'foo')
+        bar = S('command', 'bar')
+        
+        block = B([foo,
+                   S('command', 'move', '$regA', '$regB'),
+                   S('command', 'addu', '$regA', '$regA', 2),
+                   bar])
+        optimize_global(block)
+        self.assertEquals(block.statements, [foo,                     
+                   S('command', 'addu', '$regA', '$regB', 2),      
+                   bar])
+                   
+    def test_optimize_global_movinst(self):
+        foo = S('command', 'foo')
+        bar = S('command', 'bar')
+        
+        block = B([foo,
+                   S('command', 'move', '$regA', '$regB'),
+                   S('command', 'addu', '$regA', '$regC', 2),
+                   bar])
+        optimize_global(block)
+        self.assertEquals(block.statements, [foo,                     
+                   S('command', 'move', '$regA', '$regB'),
+                   S('command', 'addu', '$regA', '$regC', 2),      
+                   bar])