annotate test/testcg.py @ 291:b07d28a5ca56

Added some forgotten files
author Windel Bouwman
date Thu, 28 Nov 2013 20:31:47 +0100
parents 7b38782ed496
children 534b94b40aa8
rev   line source
209
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
1 import unittest
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
2 import ppci, codegen, ir
218
494828a7adf1 added some sort of cache to assembler
Windel Bouwman
parents: 209
diff changeset
3 import cortexm3 as arm
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
4 import codegenarm
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
5 import outstream
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
6
290
7b38782ed496 File moves
Windel Bouwman
parents: 284
diff changeset
7
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
8 def genTestFunction():
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
9 m = ir.Module('tst')
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
10 f = ir.Function('tst')
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
11 m.addFunction(f)
272
e64bae57cda8 refactor ir
Windel Bouwman
parents: 268
diff changeset
12 return m, f, f.entry
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
13
209
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
14
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
15 class testCodeGeneration(unittest.TestCase):
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
16 def setUp(self):
218
494828a7adf1 added some sort of cache to assembler
Windel Bouwman
parents: 209
diff changeset
17 self.cg = codegen.CodeGenerator(arm.armtarget)
209
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
18
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
19 def testFunction(self):
272
e64bae57cda8 refactor ir
Windel Bouwman
parents: 268
diff changeset
20 m, f, bb = genTestFunction()
268
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 243
diff changeset
21 bb.addInstruction(ir.Const(123))
272
e64bae57cda8 refactor ir
Windel Bouwman
parents: 268
diff changeset
22 bb.addInstruction(ir.Jump(f.epiloog))
209
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
23 m.check()
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
24 obj = self.cg.generate(m)
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
25 self.assertTrue(obj)
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
26
243
ef683881c64e Remove various files
Windel Bouwman
parents: 240
diff changeset
27
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
28 class testArmCodeGeneration(unittest.TestCase):
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
29 def testStack(self):
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
30 s = outstream.OutputStream()
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
31 cg = codegenarm.ArmCodeGenerator(s)
272
e64bae57cda8 refactor ir
Windel Bouwman
parents: 268
diff changeset
32 m, f, bb = genTestFunction()
268
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 243
diff changeset
33 bb.addInstruction(ir.Move(ir.Mem(ir.Const(1)), ir.Const(22)))
272
e64bae57cda8 refactor ir
Windel Bouwman
parents: 268
diff changeset
34 bb.addInstruction(ir.Jump(f.epiloog))
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
35 m.check()
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
36 cg.generate(m)
243
ef683881c64e Remove various files
Windel Bouwman
parents: 240
diff changeset
37 #s.dump()
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
38
268
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 243
diff changeset
39
209
07bfea4c1ed7 Added codegen test
Windel Bouwman
parents:
diff changeset
40 if __name__ == '__main__':
240
6259856841a0 Remove project
Windel Bouwman
parents: 218
diff changeset
41 unittest.main()