[pypy-commit] pypy ppc-jit-backend: merge

hager noreply at buildbot.pypy.org
Mon Oct 24 17:57:59 CEST 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48379:38f0e1f8b91e
Date: 2011-10-24 17:57 +0200
http://bitbucket.org/pypy/pypy/changeset/38f0e1f8b91e/

Log:	merge

diff --git a/pypy/jit/backend/ppc/ppcgen/codebuilder.py b/pypy/jit/backend/ppc/ppcgen/codebuilder.py
--- a/pypy/jit/backend/ppc/ppcgen/codebuilder.py
+++ b/pypy/jit/backend/ppc/ppcgen/codebuilder.py
@@ -954,15 +954,15 @@
             self.load_imm(rD, addr)
             self.lwzx(rD.value, 0, rD.value)
         else:
-            self.load_word(rD, addr)
-            self.ld(rD, rD, 0)
+            self.load_imm(rD, addr)
+            self.ldx(rD.value, 0, rD.value)
 
     def store_reg(self, source_reg, addr):
         self.load_imm(r.r0, addr)
         if IS_PPC_32:
             self.stwx(source_reg.value, 0, 0)
         else:
-            self.std(source_reg.value, 0, 0)
+            self.stdx(source_reg.value, 0, 0)
 
     def b_cond_offset(self, offset, condition):
         pos = self.currpos()
diff --git a/pypy/jit/backend/ppc/ppcgen/opassembler.py b/pypy/jit/backend/ppc/ppcgen/opassembler.py
--- a/pypy/jit/backend/ppc/ppcgen/opassembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/opassembler.py
@@ -262,12 +262,15 @@
     def emit_setfield_gc(self, op, arglocs, regalloc):
         value_loc, base_loc, ofs, size = arglocs
         if size.value == 8:
-            assert 0, "not implemented yet"
+            if ofs.is_imm():
+                self.mc.std(value_loc.value, base_loc.value, ofs.value)
+            else:
+                self.mc.stdx(value_loc.value, base_loc.value, ofs.value)
         elif size.value == 4:
             if ofs.is_imm():
                 self.mc.stw(value_loc.value, base_loc.value, ofs.value)
             else:
-                self.mc.stw(value_loc.value, base_loc.value, ofs.value)
+                self.mc.stwx(value_loc.value, base_loc.value, ofs.value)
         elif size.value == 2:
             if ofs.is_imm():
                 self.mc.sth(value_loc.value, base_loc.value, ofs.value)
@@ -285,7 +288,10 @@
     def emit_getfield_gc(self, op, arglocs, regalloc):
         base_loc, ofs, res, size = arglocs
         if size.value == 8:
-            assert 0, "not implemented yet"
+            if ofs.is_imm():
+                self.mc.ld(res.value, base_loc.value, ofs.value)
+            else:
+                self.mc.ldx(res.value, base_loc.value, ofs.value)
         elif size.value == 4:
             if ofs.is_imm():
                 self.mc.lwz(res.value, base_loc.value, ofs.value)
diff --git a/pypy/jit/backend/ppc/ppcgen/test/test_ppc.py b/pypy/jit/backend/ppc/ppcgen/test/test_ppc.py
--- a/pypy/jit/backend/ppc/ppcgen/test/test_ppc.py
+++ b/pypy/jit/backend/ppc/ppcgen/test/test_ppc.py
@@ -194,9 +194,9 @@
         if IS_PPC_32:
             a.load_imm(r10, call_addr)
         else:
-            a.load_from(10, call_addr)
-            a.load_from(2, call_addr+WORD)
-            a.load_from(11, call_addr+2*WORD)
+            a.load_from_addr(r10, call_addr)
+            a.load_from_addr(r2, call_addr+WORD)
+            a.load_from_addr(r11, call_addr+2*WORD)
         a.mtctr(10)
         a.bctr()
         a.blr()


More information about the pypy-commit mailing list