[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