[pypy-commit] pypy vecopt-merge: accum problem with saving data on fail descr (work in progress)

plan_rich noreply at buildbot.pypy.org
Thu Aug 20 13:44:16 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: vecopt-merge
Changeset: r79087:a9ccb0f0842b
Date: 2015-08-20 13:37 +0200
http://bitbucket.org/pypy/pypy/changeset/a9ccb0f0842b/

Log:	accum problem with saving data on fail descr (work in progress)

diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -322,6 +322,7 @@
             if accum:
                 loc = self.loc(accum.getoriginalbox())
                 faillocs.append(loc)
+                import pdb; pdb.set_trace()
                 self.update_accumulation_loc(arg, accum, descr, i)
             else:
                 faillocs.append(self.loc(arg))
diff --git a/rpython/jit/metainterp/test/test_vectorize.py b/rpython/jit/metainterp/test/test_vectorize.py
--- a/rpython/jit/metainterp/test/test_vectorize.py
+++ b/rpython/jit/metainterp/test/test_vectorize.py
@@ -220,6 +220,27 @@
         res = self.meta_interp(f, [60,58.4547])
         assert res == f(60,58.4547) == 58.4547
 
+    def test_accum(self):
+        myjitdriver = JitDriver(greens = [], reds = 'auto')
+        T = lltype.Array(rffi.DOUBLE, hints={'nolength': True})
+        def f(d, value):
+            va = lltype.malloc(T, d, flavor='raw', zero=True)
+            for i in range(d):
+                va[i] = value
+            r = 0
+            i = 0
+            while i < d:
+                myjitdriver.jit_merge_point()
+                if i >= d:
+                    raise IndexError
+                r += va[i]
+                i += 1
+            lltype.free(va, flavor='raw')
+            return r
+        res = self.meta_interp(f, [60,0.1], vec_all=True)
+        assert res == f(60,0.1) == 60*0.1
+
+
     @py.test.mark.parametrize('i',[15])
     def test_array_bounds_check_elimination(self,i):
         myjitdriver = JitDriver(greens = [],


More information about the pypy-commit mailing list