[pypy-commit] pypy ppc-jit-backend: merge
hager
noreply at buildbot.pypy.org
Thu Nov 3 17:48:16 CET 2011
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48706:0dbe1538b91a
Date: 2011-11-03 17:47 +0100
http://bitbucket.org/pypy/pypy/changeset/0dbe1538b91a/
Log: merge
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
@@ -332,7 +332,10 @@
if scale.value > 0:
scale_loc = r.r0
self.mc.load_imm(r.r0, scale.value)
- self.mc.slw(r.r0.value, ofs_loc.value, r.r0.value)
+ if IS_PPC_32:
+ self.mc.slw(r.r0.value, ofs_loc.value, r.r0.value)
+ else:
+ self.mc.sld(r.r0.value, ofs_loc.value, r.r0.value)
else:
scale_loc = ofs_loc
@@ -356,7 +359,10 @@
if scale.value > 0:
scale_loc = r.r0
self.mc.load_imm(r.r0, scale.value)
- self.mc.slw(r.r0.value, ofs_loc.value, scale.value)
+ if IS_PPC_32:
+ self.mc.slw(r.r0.value, ofs_loc.value, scale.value)
+ else:
+ self.mc.sld(r.r0.value, ofs_loc.value, scale.value)
else:
scale_loc = ofs_loc
if ofs.value > 0:
@@ -416,7 +422,10 @@
def emit_unicodegetitem(self, op, arglocs, regalloc):
res, base_loc, ofs_loc, scale, basesize, itemsize = arglocs
- self.mc.slwi(ofs_loc.value, ofs_loc.value, scale.value)
+ if IS_PPC_32:
+ self.mc.slwi(ofs_loc.value, ofs_loc.value, scale.value)
+ else:
+ self.mc.sldi(ofs_loc.value, ofs_loc.value, scale.value)
self.mc.add(res.value, base_loc.value, ofs_loc.value)
if scale.value == 2:
@@ -430,7 +439,10 @@
def emit_unicodesetitem(self, op, arglocs, regalloc):
value_loc, base_loc, ofs_loc, scale, basesize, itemsize = arglocs
- self.mc.slwi(ofs_loc.value, ofs_loc.value, scale.value)
+ if IS_PPC_32:
+ self.mc.slwi(ofs_loc.value, ofs_loc.value, scale.value)
+ else:
+ self.mc.sldi(ofs_loc.value, ofs_loc.value, scale.value)
self.mc.add(base_loc.value, base_loc.value, ofs_loc.value)
if scale.value == 2:
@@ -503,7 +515,17 @@
remap_frame_layout(self, non_float_locs, non_float_regs, r.r0)
#the actual call
- self.mc.bl_abs(adr)
+ if IS_PPC_32:
+ self.mc.bl_abs(adr)
+ else:
+ self.mc.std(r.r2.value, r.SP.value, 40)
+ self.mc.load_from_addr(r.r0, adr)
+ self.mc.load_from_addr(r.r2, adr+WORD)
+ self.mc.load_from_addr(r.r11, adr+2*WORD)
+ self.mc.mtctr(r.r0.value)
+ self.mc.bctrl()
+ self.mc.ld(r.r2.value, r.SP.value, 40)
+
self.mark_gc_roots(force_index)
regalloc.possibly_free_vars(args)
# readjust the sp in case we passed some args on the stack
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
@@ -11,7 +11,7 @@
from pypy.jit.backend.ppc.ppcgen.arch import (IS_PPC_32, WORD, NONVOLATILES,
GPR_SAVE_AREA, BACKCHAIN_SIZE)
from pypy.jit.backend.ppc.ppcgen.helper.assembler import (gen_emit_cmp_op,
- encode32, decode32, decode32_test)
+ encode32, decode32)
import pypy.jit.backend.ppc.ppcgen.register as r
import pypy.jit.backend.ppc.ppcgen.condition as c
from pypy.jit.metainterp.history import (Const, ConstPtr, LoopToken,
More information about the pypy-commit
mailing list