Author: Richard Plangger <r...@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 = [], _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit