[pypy-commit] pypy vecopt2: added test with more packs

plan_rich noreply at buildbot.pypy.org
Tue May 5 09:45:46 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: vecopt2
Changeset: r77096:214abf30c68b
Date: 2015-03-27 15:37 +0100
http://bitbucket.org/pypy/pypy/changeset/214abf30c68b/

Log:	added test with more packs

diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -105,6 +105,18 @@
         for op,i in zip(pack.operations, indices):
             assert op.opidx == i
 
+    def assert_has_pack_with(self, packset, opindices):
+        for pack in packset.packs:
+            for op,i in zip(pack.operations, opindices):
+                if op.opidx != i:
+                    break
+            else:
+                # found a pack that points to the specified operations
+                break
+        else:
+            pytest.fail("could not find a packset that points to %s" % str(opindices))
+
+
     def assert_packset_empty(self, packset, instr_count, exceptions):
         for a,b in exceptions:
             self.assert_packset_contains_pair(packset, a, b)
@@ -785,5 +797,27 @@
         assert len(vopt.vec_info.memory_refs) == 16
         assert len(vopt.packset.packs) == 0
 
+    def test_packset_vector_operation(self):
+        for op in ['int_add', 'int_sub', 'int_mul']:
+            ops = """
+            [p0,p1,p2,i0]
+            i1 = int_add(i0, 1)
+            i10 = int_le(i1, 128)
+            guard_true(i10) []
+            i2 = getarrayitem_gc(p0, i0, descr=floatarraydescr)
+            i3 = getarrayitem_gc(p1, i0, descr=floatarraydescr)
+            i4 = {op}(i2,i3)
+            setarrayitem_gc(p1, i0, i4, descr=floatarraydescr)
+            jump(p0,p1,p2,i1)
+            """.format(op=op)
+            loop = self.parse_loop(ops)
+            vopt = self.combine_packset(loop,3)
+            assert len(vopt.vec_info.memory_refs) == 12
+            assert len(vopt.packset.packs) == 4
+
+            for opindices in [(4,11,18,25),(5,12,19,26),
+                              (6,13,20,27),(7,14,21,28)]:
+                self.assert_has_pack_with(vopt.packset, opindices)
+
 class TestLLtype(BaseTestVectorize, LLtypeMixin):
     pass
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -344,7 +344,6 @@
         return 0
 
     def combine(self, i, j):
-        print "combine", i, j
         pack_i = self.packs[i]
         pack_j = self.packs[j]
         operations = pack_i.operations


More information about the pypy-commit mailing list