[pypy-svn] r77633 - pypy/branch/arm-backend/pypy/jit/backend/arm/test
david at codespeak.net
david at codespeak.net
Tue Oct 5 21:34:22 CEST 2010
Author: david
Date: Tue Oct 5 21:34:21 2010
New Revision: 77633
Added:
pypy/branch/arm-backend/pypy/jit/backend/arm/test/support.py
pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_assembler.py
Log:
integration tests to check generated instructions on arm
Added: pypy/branch/arm-backend/pypy/jit/backend/arm/test/support.py
==============================================================================
--- (empty file)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/test/support.py Tue Oct 5 21:34:21 2010
@@ -0,0 +1,21 @@
+from pypy.rpython.lltypesystem import lltype, rffi
+
+def run_asm(asm):
+ BOOTSTRAP_TP = lltype.FuncType([], lltype.Signed)
+ addr = asm.mc.baseaddr()#executable_token._arm_bootstrap_code
+ assert addr % 8 == 0
+ func = rffi.cast(lltype.Ptr(BOOTSTRAP_TP), addr)
+ return func()
+
+def skip_unless_arm(f):
+ import os
+ def skip_it(*args):
+ import py
+ py.test.skip('only for arm')
+
+ func = skip_it
+ try:
+ if os.uname()[4].index('arm') >= 0:
+ func=f
+ finally:
+ return func
Added: pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_assembler.py
==============================================================================
--- (empty file)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/test/test_assembler.py Tue Oct 5 21:34:21 2010
@@ -0,0 +1,38 @@
+from pypy.jit.backend.arm import registers as r
+from pypy.jit.backend.arm.assembler import AssemblerARM
+from pypy.jit.backend.arm.test.support import skip_unless_arm, run_asm
+
+class TestRunningAssembler():
+ def setup_method(self, method):
+ self.a = AssemblerARM(None)
+
+ @skip_unless_arm
+ def test_load_small_int_to_reg(self):
+ self.a.gen_preamble()
+ self.a.gen_load_int(r.r0, 123)
+ self.a.gen_out()
+ assert run_asm(self.a) == 123
+
+ @skip_unless_arm
+ def test_load_medium_int_to_reg(self):
+ self.a.gen_preamble()
+ self.a.gen_load_int(r.r0, 0xBBD7)
+ self.a.gen_out()
+ assert run_asm(self.a) == 48087
+
+ @skip_unless_arm
+ def test_load_int_to_reg(self):
+ self.a.gen_preamble()
+ self.a.gen_load_int(r.r0, 0xFFFFFF85)
+ self.a.gen_out()
+ assert run_asm(self.a) == -123
+
+
+ @skip_unless_arm
+ def test_or(self):
+ self.a.gen_preamble()
+ self.a.mc.MOV_ri(r.r1, 8)
+ self.a.mc.MOV_ri(r.r2, 8)
+ self.a.mc.ORR_rr(r.r0, r.r1, r.r2, 4)
+ self.a.gen_out()
+ assert run_asm(self.a) == 0x88
More information about the Pypy-commit
mailing list