Author: edelsoh Branch: ppc-jit-backend Changeset: r48453:d4c1290fd460 Date: 2011-10-25 15:23 -0400 http://bitbucket.org/pypy/pypy/changeset/d4c1290fd460/
Log: More PPC64 support for arraylen_gc, setarrayitem_gc, getarrayitem_gc 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 @@ -222,9 +222,15 @@ offset = locs[2] if offset is not None: if offset.is_imm(): - self.mc.lwz(r.r0.value, locs[0].value, offset.value) + if IS_PPC_32: + self.mc.lwz(r.r0.value, locs[0].value, offset.value) + else: + self.mc.ld(r.r0.value, locs[0].value, offset.value) else: - self.mc.lwzx(r.r0.value, locs[0].value, offset.value) + if IS_PPC_32: + self.mc.lwzx(r.r0.value, locs[0].value, offset.value) + else: + self.mc.ldx(r.r0.value, locs[0].value, offset.value) self.mc.cmp(r.r0.value, locs[1].value) else: assert 0, "not implemented yet" @@ -313,7 +319,10 @@ # XXX 64 bit adjustment def emit_arraylen_gc(self, op, arglocs, regalloc): res, base_loc, ofs = arglocs - self.mc.lwz(res.value, base_loc.value, ofs.value) + if IS_PPC_32: + self.mc.lwz(res.value, base_loc.value, ofs.value) + else: + self.mc.ld(res.value, base_loc.value, ofs.value) # XXX 64 bit adjustment def emit_setarrayitem_gc(self, op, arglocs, regalloc): @@ -330,7 +339,7 @@ scale_loc = r.r0 if scale.value == 3: - assert 0, "not implemented yet" + self.mc.stdx(value_loc.value, base_loc.value, scale_loc.value) elif scale.value == 2: self.mc.stwx(value_loc.value, base_loc.value, scale_loc.value) elif scale.value == 1: @@ -354,7 +363,7 @@ scale_loc = r.r0 if scale.value == 3: - assert 0, "not implemented yet" + self.mc.ldx(res.value, base_loc.value, scale_loc.value) elif scale.value == 2: self.mc.lwzx(res.value, base_loc.value, scale_loc.value) elif scale.value == 1: _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit