[pypy-commit] pypy ppc-jit-backend: Use encode64/decode64 for IMM on PPC64.

edelsohn noreply at buildbot.pypy.org
Fri Dec 30 16:15:04 CET 2011


Author: edelsohn
Branch: ppc-jit-backend
Changeset: r50957:e2765d568453
Date: 2011-12-30 10:14 -0500
http://bitbucket.org/pypy/pypy/changeset/e2765d568453/

Log:	Use encode64/decode64 for IMM on PPC64.

diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
@@ -15,8 +15,8 @@
                                               FPR_SAVE_AREA,
                                               FLOAT_INT_CONVERSION, FORCE_INDEX)
 from pypy.jit.backend.ppc.ppcgen.helper.assembler import (gen_emit_cmp_op, 
-                                                          encode32, decode32,
-                                                          decode64,
+                                                          encode32, encode64,
+                                                          decode32, decode64,
                                                           count_reg_args,
                                                           Saved_Volatiles)
 import pypy.jit.backend.ppc.ppcgen.register as r
@@ -199,8 +199,12 @@
             if res == self.IMM_LOC:
                # imm value
                 if group == self.INT_TYPE or group == self.REF_TYPE:
-                    value = decode32(enc, i+1)
-                    i += 4
+                    if IS_PPC_32:
+                        value = decode32(enc, i+1)
+                        i += 4
+                    else:
+                        value = decode64(enc, i+1)
+                        i += 8
                 else:
                     assert 0, "not implemented yet"
             elif res == self.STACK_LOC:
@@ -620,8 +624,12 @@
                     assert (arg.type == INT or arg.type == REF
                                 or arg.type == FLOAT)
                     mem[j] = self.IMM_LOC
-                    encode32(mem, j+1, loc.getint())
-                    j += 5
+                    if IS_PPC_32:
+                        encode32(mem, j+1, loc.getint())
+                        j += 5
+                    else:
+                        encode64(mem, j+1, loc.getint())
+                        j += 9
                 else:
                     mem[j] = self.STACK_LOC
                     encode32(mem, j+1, loc.position)


More information about the pypy-commit mailing list