[pypy-commit] pypy s390x-backend: _multiply_by_constant is still used by malloc_cond_varsize
plan_rich
pypy.commits at gmail.com
Sun Mar 6 12:39:33 EST 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r82821:64b4e6d07aed
Date: 2016-03-06 18:38 +0100
http://bitbucket.org/pypy/pypy/changeset/64b4e6d07aed/
Log: _multiply_by_constant is still used by malloc_cond_varsize
diff --git a/rpython/jit/backend/ppc/opassembler.py b/rpython/jit/backend/ppc/opassembler.py
--- a/rpython/jit/backend/ppc/opassembler.py
+++ b/rpython/jit/backend/ppc/opassembler.py
@@ -828,6 +828,29 @@
SIZE2SCALE = dict([(1<<_i, _i) for _i in range(32)])
+ def _multiply_by_constant(self, loc, multiply_by, scratch_loc):
+ # XXX should die together with _apply_scale() but can't because
+ # of emit_zero_array() and malloc_cond_varsize() at the moment
+ assert loc.is_reg()
+ if multiply_by == 1:
+ return loc
+ try:
+ scale = self.SIZE2SCALE[multiply_by]
+ except KeyError:
+ if _check_imm_arg(multiply_by):
+ self.mc.mulli(scratch_loc.value, loc.value, multiply_by)
+ else:
+ self.mc.load_imm(scratch_loc, multiply_by)
+ if IS_PPC_32:
+ self.mc.mullw(scratch_loc.value, loc.value,
+ scratch_loc.value)
+ else:
+ self.mc.mulld(scratch_loc.value, loc.value,
+ scratch_loc.value)
+ else:
+ self.mc.sldi(scratch_loc.value, loc.value, scale)
+ return scratch_loc
+
def _copy_in_scratch2(self, loc):
if loc.is_imm():
self.mc.li(r.SCRATCH2.value, loc.value)
More information about the pypy-commit
mailing list