[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