|
@@ -11,8 +11,8 @@ class TestOptimize(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_optimize_global_movaa(self):
|
|
def test_optimize_global_movaa(self):
|
|
|
foo = S('command', 'foo')
|
|
foo = S('command', 'foo')
|
|
|
- bar = S('command', 'baz')
|
|
|
|
|
- block = B([foo, \
|
|
|
|
|
|
|
+ bar = S('command', 'bar')
|
|
|
|
|
+ block = B([foo,
|
|
|
S('command', 'move', '$regA', '$regA'),
|
|
S('command', 'move', '$regA', '$regA'),
|
|
|
bar])
|
|
bar])
|
|
|
optimize_global(block)
|
|
optimize_global(block)
|
|
@@ -21,11 +21,36 @@ class TestOptimize(unittest.TestCase):
|
|
|
def test_optimize_global_movab(self):
|
|
def test_optimize_global_movab(self):
|
|
|
foo = S('command', 'foo')
|
|
foo = S('command', 'foo')
|
|
|
move = S('command', 'move', '$regA', '$regB')
|
|
move = S('command', 'move', '$regA', '$regB')
|
|
|
- bar = S('command', 'baz')
|
|
|
|
|
- block = B([foo, \
|
|
|
|
|
|
|
+ bar = S('command', 'bar')
|
|
|
|
|
+ block = B([foo,
|
|
|
move,
|
|
move,
|
|
|
bar])
|
|
bar])
|
|
|
optimize_global(block)
|
|
optimize_global(block)
|
|
|
self.assertEquals(block.statements, [foo, move, bar])
|
|
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])
|