[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