[pypy-commit] pypy backend-vector-ops: good finally a failing test
fijal
noreply at buildbot.pypy.org
Fri Feb 17 17:02:41 CET 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: backend-vector-ops
Changeset: r52590:011140751305
Date: 2012-02-17 18:02 +0200
http://bitbucket.org/pypy/pypy/changeset/011140751305/
Log: good finally a failing test
diff --git a/pypy/jit/backend/x86/test/test_vectorize.py b/pypy/jit/backend/x86/test/test_vectorize.py
--- a/pypy/jit/backend/x86/test/test_vectorize.py
+++ b/pypy/jit/backend/x86/test/test_vectorize.py
@@ -1,7 +1,7 @@
from pypy.rpython.lltypesystem import lltype, rffi
from pypy.jit.backend.x86.test.test_basic import Jit386Mixin
-from pypy.rlib import jit
+from pypy.rlib import jit, libffi, clibffi
class TestVectorize(Jit386Mixin):
def test_vectorize(self):
@@ -39,3 +39,49 @@
return r
assert self.meta_interp(f, [20]) == f(20)
+
+ def test_vector_ops_libffi(self):
+ TP = rffi.CArray(lltype.Float)
+ elem_size = rffi.sizeof(lltype.Float)
+ ftype = clibffi.cast_type_to_ffitype(lltype.Float)
+
+ driver = jit.JitDriver(greens = [], reds = ['a', 'i', 'b', 'size'])
+
+ def read_item(arr, item):
+ return libffi.array_getitem(ftype, elem_size, arr, item, 0)
+
+ def store_item(arr, item, v):
+ libffi.array_setitem(ftype, elem_size, arr, item, 0, v)
+
+ def initialize(arr, size):
+ for i in range(size):
+ arr[i] = float(i)
+
+ def sum(arr, size):
+ s = 0
+ for i in range(size):
+ s += arr[i]
+ return s
+
+ def f(size):
+ a = lltype.malloc(TP, size, flavor='raw')
+ b = lltype.malloc(TP, size, flavor='raw')
+ initialize(a, size)
+ initialize(b, size)
+ i = 0
+ while i < size:
+ driver.jit_merge_point(a=a, i=i, size=size, b=b)
+ jit.assert_aligned(a, i)
+ jit.assert_aligned(b, i)
+ store_item(b, i, read_item(a, i) + read_item(a, i))
+ i += 1
+ store_item(b, i, read_item(a, i) + read_item(a, i))
+ i += 1
+ r = sum(b, size)
+ lltype.free(a, flavor='raw')
+ lltype.free(b, flavor='raw')
+ return r
+
+ res = f(20)
+ assert self.meta_interp(f, [20]) == res
+
More information about the pypy-commit
mailing list