[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