[pypy-commit] pypy arm-backend-2: add more tests for unsupported cases when moving between locations

bivab noreply at buildbot.pypy.org
Fri Sep 30 12:00:17 CEST 2011


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backend-2
Changeset: r47705:222f53104914
Date: 2011-09-29 13:10 +0200
http://bitbucket.org/pypy/pypy/changeset/222f53104914/

Log:	add more tests for unsupported cases when moving between locations

diff --git a/pypy/jit/backend/arm/assembler.py b/pypy/jit/backend/arm/assembler.py
--- a/pypy/jit/backend/arm/assembler.py
+++ b/pypy/jit/backend/arm/assembler.py
@@ -862,7 +862,7 @@
             self.mc.VLDR(loc.value, r.ip.value)
 
     def _mov_imm_to_loc(self, prev_loc, loc, cond=c.AL):
-        if not loc.is_reg() and not loc.is_stack():
+        if not loc.is_reg() and not (loc.is_stack() and loc.type == INT):
             raise AssertionError("invalid target for move from imm value")
         if loc.is_reg():
             new_loc = loc
@@ -881,7 +881,7 @@
             raise AssertionError("mov reg to imm doesn't make sense")
         if loc.is_reg():
             self.mc.MOV_rr(loc.value, prev_loc.value, cond=cond)
-        elif loc.is_stack():
+        elif loc.is_stack() and loc.type == INT:
             # spill a core register
             offset = ConstInt(loc.position*WORD)
             if not _check_imm_arg(offset, size=0xFFF):
diff --git a/pypy/jit/backend/arm/test/test_regalloc_mov.py b/pypy/jit/backend/arm/test/test_regalloc_mov.py
--- a/pypy/jit/backend/arm/test/test_regalloc_mov.py
+++ b/pypy/jit/backend/arm/test/test_regalloc_mov.py
@@ -214,22 +214,25 @@
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm(1), imm(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm(1), imm_float(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm(1), vfp(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm(1), stack_float(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), imm(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), imm_float(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), r(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), stack(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), stack_float(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), imm_float(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(imm_float(1), imm(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(r(1), imm(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(r(1), imm_float(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(vfp(1), imm(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(vfp(1), imm_float(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(r(1), stack_float(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(r(1), vfp(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), imm(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), imm_float(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), stack(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), imm_float(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), imm(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), stack_float(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack(1), vfp(2))')
-        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), r(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), imm(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), imm_float(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), r(2))')
+        py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), stack(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(stack_float(1), stack_float(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(vfp(1), imm(2))')
         py.test.raises(AssertionError, 'self.asm.regalloc_mov(vfp(1), imm_float(2))')


More information about the pypy-commit mailing list