Author: David Schneider <david.schnei...@picle.org> Branch: Changeset: r63799:8cc8ee5b0f01 Date: 2013-05-02 14:17 +0200 http://bitbucket.org/pypy/pypy/changeset/8cc8ee5b0f01/
Log: add tests for vldm and vstm diff --git a/rpython/jit/backend/arm/test/test_assembler.py b/rpython/jit/backend/arm/test/test_assembler.py --- a/rpython/jit/backend/arm/test/test_assembler.py +++ b/rpython/jit/backend/arm/test/test_assembler.py @@ -6,6 +6,7 @@ from rpython.jit.backend.arm.test.support import run_asm from rpython.jit.backend.detect_cpu import getcpuclass from rpython.jit.metainterp.resoperation import rop +from rpython.jit.codewriter import longlong from rpython.rtyper.annlowlevel import llhelper from rpython.rtyper.lltypesystem import lltype, rffi @@ -273,12 +274,50 @@ self.a.mc.gen_load_int(r.ip.value, rffi.cast(lltype.Signed, container)) self.a.mc.LDM(r.ip.value, [x for x in range(10)]) for x in range(1, 10): - self.a.mc.ADD_ri(0, 0, x) + self.a.mc.ADD_rr(0, 0, x) self.a.gen_func_epilog() - res = run_asm(self.a) + res = run_asm(self.a) assert res == sum(range(10)) lltype.free(container, flavor='raw') + def test_vstm(self): + n = 14 + source_container = lltype.malloc(lltype.Array(longlong.FLOATSTORAGE, + hints={'nolength': True}), n, flavor='raw') + target_container = lltype.malloc(lltype.Array(longlong.FLOATSTORAGE, + hints={'nolength': True}), n, flavor='raw') + for x in range(n): + source_container[x] = longlong.getfloatstorage(float("%d.%d" % (x,x))) + self.a.gen_func_prolog() + for x in range(n): + self.a.mc.ADD_ri(r.ip.value, r.ip.value, 8) + self.a.mc.VLDR(n, r.ip.value) + self.a.mc.gen_load_int(r.ip.value, rffi.cast(lltype.Signed, target_container)) + self.a.mc.VSTM(r.ip.value, [x for x in range(n)]) + self.a.gen_func_epilog() + run_asm(self.a) + for d in range(n): + res = longlong.getrealfloat(target_container[0]) == float("%d.%d" % (d,d)) + lltype.free(source_container, flavor='raw') + lltype.free(target_container, flavor='raw') + + def test_vldm(self): + n = 14 + container = lltype.malloc(lltype.Array(longlong.FLOATSTORAGE, + hints={'nolength': True}), n, flavor='raw') + for x in range(n): + container[x] = longlong.getfloatstorage(float("%d.%d" % (x,x))) + self.a.gen_func_prolog() + self.a.mc.gen_load_int(r.ip.value, rffi.cast(lltype.Signed, container)) + self.a.mc.VLDM(r.ip.value, [x for x in range(n)]) + for x in range(1, n): + self.a.mc.VADD(0, 0, x) + self.a.mc.VSTR(r.d0.value, r.ip.value) + self.a.gen_func_epilog() + res = run_asm(self.a) + assert longlong.getrealfloat(container[0]) == sum([float("%d.%d" % (d,d)) for d in range(n)]) + lltype.free(container, flavor='raw') + def callme(inp): i = inp + 10 return i _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit