[pypy-svn] pypy arm-backed-float: loading of float value into core and vfp registers

bivab commits-noreply at bitbucket.org
Fri Apr 1 16:05:07 CEST 2011


Author: David Schneider <david.schneider at picle.org>
Branch: arm-backed-float
Changeset: r43083:adef3a5e35f5
Date: 2011-04-01 11:15 +0200
http://bitbucket.org/pypy/pypy/changeset/adef3a5e35f5/

Log:	loading of float value into core and vfp registers

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
@@ -620,7 +620,19 @@
             prev_loc = new_loc
             if not loc.is_stack():
                 return
-
+        if prev_loc.is_imm_float():
+            temp = r.lr
+            self.mc.gen_load_int(temp.value, prev_loc.getint())
+            if loc.is_reg():
+                # we need to load one word to loc and one to loc+1 which are
+                # two 32-bit core registers
+                self.mc.LDR_ri(loc.value, temp.value)
+                self.mc.LDR_ri(loc.value+1, temp.value, imm=WORD)
+            elif loc.is_vfp_reg():
+                # we need to load the thing into loc, which is a vfp reg
+                self.mc.VLDR(loc.value, temp.value)
+            assert not loc.is_stack()
+            return
         if loc.is_stack() or prev_loc.is_stack():
             temp = r.lr
             if loc.is_stack() and prev_loc.is_reg():


More information about the Pypy-commit mailing list