Mercurial > lcfOS
view test/testgraph.py @ 322:44f336460c2a
Half of use of burg spec for arm
author | Windel Bouwman |
---|---|
date | Mon, 27 Jan 2014 19:58:07 +0100 |
parents | 6753763d3bec |
children | e9fe6988497c |
line wrap: on
line source
#!/usr/bin/python import unittest from ppci.codegen.graph import Graph, Node from ppci.codegen.interferencegraph import InterferenceGraph from ppci.codegen.flowgraph import FlowGraph from ppci import ir from ppci.irmach import AbstractInstruction as AI from target import Nop class GraphTestCase(unittest.TestCase): def testEdge(self): g = Graph() n1 = Node(g) g.addNode(n1) n2 = Node(g) g.addNode(n2) g.addEdge(n1, n2) self.assertTrue(g.hasEdge(n2, n1)) self.assertTrue(g.hasEdge(n1, n2)) g.delNode(n1) g.delNode(n2) def testDegree(self): g = Graph() n1 = Node(g) g.addNode(n1) n2 = Node(g) g.addNode(n2) n3 = Node(g) g.addNode(n3) g.addEdge(n1, n2) g.addEdge(n1, n3) self.assertEqual(2, n1.Degree) self.assertEqual(1, n2.Degree) g.delNode(n2) self.assertEqual(1, n1.Degree) class DigraphTestCase(unittest.TestCase): pass class InterferenceGraphTestCase(unittest.TestCase): def testNormalUse(self): t1 = ir.Temp('t1') t2 = ir.Temp('t2') t3 = ir.Temp('t3') t4 = ir.Temp('t4') t5 = ir.Temp('t5') t6 = ir.Temp('t6') instrs = [] instrs.append(AI(Nop, dst=[t1])) instrs.append(AI(Nop, dst=[t2])) instrs.append(AI(Nop, dst=[t3])) cfg = FlowGraph(instrs) ig = InterferenceGraph(cfg) def testCombine(self): t1 = ir.Temp('t1') t2 = ir.Temp('t2') t3 = ir.Temp('t3') t4 = ir.Temp('t4') instrs = [] instrs.append(AI(Nop, dst=[t1])) instrs.append(AI(Nop, dst=[t2])) instrs.append(AI(Nop, dst=[t3])) instrs.append(AI(Nop, dst=[t4], src=[t3])) instrs.append(AI(Nop, src=[t4])) instrs.append(AI(Nop, src=[t1])) instrs.append(AI(Nop, src=[t2])) cfg = FlowGraph(instrs) ig = InterferenceGraph(cfg) ig.Combine(ig.getNode(t4), ig.getNode(t3)) self.assertIs(ig.getNode(t4), ig.getNode(t3)) if __name__ == '__main__': unittest.main()