[pypy-commit] pypy ppc-jit-backend: Implemented INT_MOD.
hager
noreply at buildbot.pypy.org
Tue Oct 18 14:17:06 CEST 2011
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48201:62d9032ce3fa
Date: 2011-10-18 12:32 +0200
http://bitbucket.org/pypy/pypy/changeset/62d9032ce3fa/
Log: Implemented INT_MOD.
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
@@ -59,7 +59,18 @@
self.mc.load_imm(r.r0, l1.value)
div(res.value, l0.value, r.r0.value)
else:
- self.mc.divw(res.value, l0.value, l1.value)
+ div(res.value, l0.value, l1.value)
+
+ def emit_int_mod(self, op, arglocs, regalloc):
+ l0, l1, res = arglocs
+ if IS_PPC_32:
+ self.mc.divw(r.r0.value, l0.value, l1.value)
+ self.mc.mullw(r.r0.value, r.r0.value, l1.value)
+ else:
+ self.mc.divd(r.r0.value, l0.value, l1.value)
+ self.mc.mulld(r.r0.value, r.r0.value, l1.value)
+ self.mc.subf(r.r0.value, r.r0.value, l0.value)
+ self.mc.mr(res.value, r.r0.value)
emit_int_le = gen_emit_cmp_op(c.LE)
diff --git a/pypy/jit/backend/ppc/ppcgen/regalloc.py b/pypy/jit/backend/ppc/ppcgen/regalloc.py
--- a/pypy/jit/backend/ppc/ppcgen/regalloc.py
+++ b/pypy/jit/backend/ppc/ppcgen/regalloc.py
@@ -219,6 +219,9 @@
self.possibly_free_var(op.result)
return [reg1, reg2, res]
+ def prepare_int_mod(self, op):
+ return self.prepare_int_mul(op)
+
def prepare_finish(self, op):
args = [locations.imm(self.frame_manager.frame_depth)]
for i in range(op.numargs()):
More information about the pypy-commit
mailing list