[pypy-commit] pypy ppc-jit-backend: Support push and pop of floating point registers.

edelsohn noreply at buildbot.pypy.org
Fri Jun 15 16:38:58 CEST 2012


Author: edelsohn
Branch: ppc-jit-backend
Changeset: r55684:21bd23bf1aeb
Date: 2012-06-15 10:38 -0400
http://bitbucket.org/pypy/pypy/changeset/21bd23bf1aeb/

Log:	Support push and pop of floating point registers.

diff --git a/pypy/jit/backend/ppc/ppc_assembler.py b/pypy/jit/backend/ppc/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppc_assembler.py
@@ -1269,6 +1269,10 @@
             self.mc.addi(r.SP.value, r.SP.value, -WORD) # decrease stack pointer
             # push value
             self.mc.store(loc.value, r.SP.value, 0)
+        elif loc.is_fp_reg():
+            self.mc.addi(r.SP.value, r.SP.value, -WORD) # decrease stack pointer
+            # push value
+            self.mc.stfd(loc.value, r.SP.value, 0)
         elif loc.is_imm():
             assert 0, "not implemented yet"
         elif loc.is_imm_float():
@@ -1292,6 +1296,9 @@
             else:
                 self.mc.ld(loc.value, r.SP.value, 0)
             self.mc.addi(r.SP.value, r.SP.value, WORD) # increase stack pointer
+        elif loc.is_fp_reg():
+            self.mc.lfd(loc.value, r.SP.value, 0)
+            self.mc.addi(r.SP.value, r.SP.value, WORD) # increase stack pointer
         else:
             raise AssertionError('Trying to pop to an invalid location')
 


More information about the pypy-commit mailing list