[pypy-commit] pypy backend-vector-ops: a test and a fix

fijal noreply at buildbot.pypy.org
Wed Feb 15 18:56:03 CET 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: backend-vector-ops
Changeset: r52520:d484c26c1eee
Date: 2012-02-15 19:54 +0200
http://bitbucket.org/pypy/pypy/changeset/d484c26c1eee/

Log:	a test and a fix

diff --git a/pypy/jit/metainterp/optimizeopt/test/test_vectorize.py b/pypy/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -271,5 +271,19 @@
         ops = """
         [p0, p1, p2, i0, i1, i2]
         call(0, p0, i0, descr=assert_aligned)
+        call(0, p1, i1, descr=assert_aligned)
         f0 = getarrayitem_raw(p0, i0, descr=arraydescr)
-        xxx
+        f1 = getarrayitem_raw(p1, i1, descr=arraydescr)
+        f2 = float_add(f0, f1)
+        i3 = cast_float_to_int(f2)
+        finish(p0, p1, p2, i0, i1, i3)
+        """
+        expected = """
+        [p0, p1, p2, i0, i1, i2]
+        f0 = getarrayitem_raw(p0, i0, descr=arraydescr)
+        f1 = getarrayitem_raw(p1, i1, descr=arraydescr)
+        f2 = float_add(f0, f1)
+        i3 = cast_float_to_int(f2)
+        finish(p0, p1, p2, i0, i1, i3)
+        """
+        self.optimize_loop(ops, expected)
diff --git a/pypy/jit/metainterp/optimizeopt/vectorize.py b/pypy/jit/metainterp/optimizeopt/vectorize.py
--- a/pypy/jit/metainterp/optimizeopt/vectorize.py
+++ b/pypy/jit/metainterp/optimizeopt/vectorize.py
@@ -195,7 +195,11 @@
         elif op.is_always_pure():
             # in theory no side effect ops, but stuff like malloc
             # can go in the way
-            pass
+            # we also need to keep track of stuff that can go into those
+            for box in op.getarglist():
+                if self.getvalue(box) in self.track:
+                    self.reset()
+                    break
         else:
             self.reset()
         self.emit_operation(op)


More information about the pypy-commit mailing list