Author: hager <sven.ha...@uni-duesseldorf.de> Branch: ppc-jit-backend Changeset: r48208:2e644469f894 Date: 2011-10-18 15:49 +0200 http://bitbucket.org/pypy/pypy/changeset/2e644469f894/
Log: Implemented further binary int operations. 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 @@ -83,6 +83,34 @@ def emit_int_xor(self, op, arglocs, regalloc): l0, l1, res = arglocs self.mc.xor(res.value, l0.value, l1.value) + + def emit_int_lshift(self, op, arglocs, regalloc): + l0, l1, res = arglocs + if IS_PPC_32: + self.mc.slw(res.value, l0.value, l1.value) + else: + self.mc.sld(res.value, l0.value, l1.value) + + def emit_int_rshift(self, op, arglocs, regalloc): + l0, l1, res = arglocs + if IS_PPC_32: + self.mc.sraw(res.value, l0.value, l1.value) + else: + self.mc.srad(res.value, l0.value, l1.value) + + def emit_uint_rshift(self, op, arglocs, regalloc): + l0, l1, res = arglocs + if IS_PPC_32: + self.mc.srw(res.value, l0.value, l1.value) + else: + self.mc.srd(res.value, l0.value, l1.value) + + def emit_uint_floordiv(self, op, arglocs, regalloc): + l0, l1, res = arglocs + if IS_PPC_32: + self.mc.divwu(res.value, l0.value, l1.value) + else: + self.mc.divdu(res.value, l0.value, l1.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 @@ -231,6 +231,18 @@ def prepare_int_xor(self, op): return self.prepare_int_mul(op) + def prepare_int_lshift(self, op): + return self.prepare_int_mul(op) + + def prepare_int_rshift(self, op): + return self.prepare_int_mul(op) + + def prepare_uint_rshift(self, op): + return self.prepare_int_mul(op) + + def prepare_uint_floordiv(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()): _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit