コード例 #1
0
 def test_opcount_filling_store(self):
     descr = ArrayDescr(0, 8, None, 'F', concrete_type='f')
     pack = Pack([
         Node(ResOperation(rop.RAW_STORE, [0, 0, arg('f', 4)], descr), 0),
         Node(ResOperation(rop.RAW_STORE, [0, 0, arg('f', 4)], descr), 0),
     ])
     assert pack.opcount_filling_vector_register(16) == 2
コード例 #2
0
 def __init__(self, loop):
     self.loop = loop
     if isinstance(loop, list):
         self.nodes = loop
     else:
         operations = loop.operations
         self.nodes = [Node(op,i) for i,op in \
                         enumerate(operations)]
     self.schedulable_nodes = list(reversed(self.nodes))
     self.guards = []
コード例 #3
0
    def test_next_must_not_loop_forever(self):
        scheduler = Scheduler()

        def delay(node, state):
            node.count += 1
            return True

        scheduler.delay = delay

        class State(object):
            pass

        class Node(object):
            emitted = False
            pack = None
            count = 0

        state = State()
        state.worklist = [Node(), Node(), Node(), Node(), Node()]
        assert scheduler.next(state) is None
        for node in state.worklist:
            assert node.count == 1
コード例 #4
0
 def test_opcount_filling_guard(self):
     descr = ArrayDescr(0, 4, None, 'S')
     vec = ResOperation(rop.VEC_RAW_LOAD_I, ['a', 'i'], descr=descr)
     vec.count = 4
     pack = Pack([
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 0),
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 1),
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 2),
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 3),
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 4),
         Node(ResOperation(rop.GUARD_TRUE, [vec]), 5),
     ])
     assert pack.pack_load(16) == 24 - 16
     assert pack.pack_load(8) == 24 - 8
     assert pack.pack_load(32) == 24 - 32
     assert pack.opcount_filling_vector_register(16) == 4
     ops, newops = pack.slice_operations(16)
     assert len(ops) == 4
     assert len(newops) == 2
     assert pack.opcount_filling_vector_register(8) == 2
     ops, newops = pack.slice_operations(8)
     assert len(ops) == 2
     assert len(newops) == 4
コード例 #5
0
 def __init__(self, i):
     Node.__init__(self, None, i)
     pass
コード例 #6
0
ファイル: test_dependency.py プロジェクト: cimarieta/usp
 def __init__(self, i):
     Node.__init__(self, None, i)
     pass