[pypy-commit] pypy ppc-jit-backend: Changed emit_int_add, can now handle different combinations of ConstInt and BoxInt arguments.

hager noreply at buildbot.pypy.org
Fri Aug 12 10:33:31 CEST 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r46453:9b0988e7fa7f
Date: 2011-08-12 10:14 +0200
http://bitbucket.org/pypy/pypy/changeset/9b0988e7fa7f/

Log:	Changed emit_int_add, can now handle different combinations of
	ConstInt and BoxInt arguments.

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
@@ -926,12 +926,22 @@
     def emit_int_add(self, op, cpu):
         arg0 = op.getarg(0)
         arg1 = op.getarg(1)
-        regnum = cpu.reg_map[arg0]
-        if isinstance(arg1, ConstInt):
-            self.addi(cpu.next_free_register, regnum, arg1.value)
-        elif isinstance(arg1, BoxInt):
-            regnum2 = cpu.reg_map[arg1]
-            self.add(cpu.next_free_register, regnum, regnum2)
+        if isinstance(arg0, BoxInt):
+            regnum = cpu.reg_map[arg0]
+            if isinstance(arg1, ConstInt):
+                self.addi(cpu.next_free_register, regnum, arg1.value)
+            elif isinstance(arg1, BoxInt):
+                regnum2 = cpu.reg_map[arg1]
+                self.add(cpu.next_free_register, regnum, regnum2)
+        else:
+            regnum = cpu.get_next_register()
+            self.load_word(regnum, arg0.value)
+            if isinstance(arg1, ConstInt):
+                self.addi(cpu.next_free_register, regnum, arg1.value)
+            elif isinstance(arg1, BoxInt):
+                regnum2 = cpu.reg_map[arg1]
+                self.add(cpu.next_free_register, regnum, regnum2)
+            
         result = op.result
         cpu.reg_map[result] = cpu.next_free_register
         cpu.next_free_register += 1


More information about the pypy-commit mailing list