Author: Richard Plangger <planri...@gmail.com> Branch: ppc-vsx-support Changeset: r87341:dfdd69e68380 Date: 2016-09-23 10:05 +0200 http://bitbucket.org/pypy/pypy/changeset/dfdd69e68380/
Log: fix ppc accum issue diff --git a/rpython/jit/backend/ppc/vector_ext.py b/rpython/jit/backend/ppc/vector_ext.py --- a/rpython/jit/backend/ppc/vector_ext.py +++ b/rpython/jit/backend/ppc/vector_ext.py @@ -261,11 +261,18 @@ vector_loc = accum_info.location # the upper elements will be lost if saved to the stack! scalar_arg = accum_info.getoriginal() + orig_scalar_loc = scalar_loc if not scalar_loc.is_reg(): - scalar_loc = regalloc.force_allocate_reg(scalar_arg) + if scalar_arg.type == FLOAT: + scalar_loc = r.FP_SCRATCH + else: + scalar_loc = r.SCRATCH + self.regalloc_mov(orig_scalar_loc, scalar_loc) assert scalar_arg is not None op = accum_info.accum_operation self._accum_reduce(op, scalar_arg, vector_loc, scalar_loc) + if orig_scalar_loc is not scalar_loc: + self.regalloc_mov(scalar_loc, orig_scalar_loc) accum_info = accum_info.next() def _accum_reduce(self, op, arg, accumloc, targetloc): @@ -291,11 +298,11 @@ self.mc.load_imm(r.SCRATCH2, PARAM_SAVE_AREA_OFFSET) self.mc.stvx(acc, r.SCRATCH2.value, r.SP.value) self.mc.load(tgt, r.SP.value, PARAM_SAVE_AREA_OFFSET) - self.mc.load(r.SCRATCH.value, r.SP.value, PARAM_SAVE_AREA_OFFSET+8) + self.mc.load(r.SCRATCH2.value, r.SP.value, PARAM_SAVE_AREA_OFFSET+8) if op == '+': - self.mc.add(tgt, tgt, acc) + self.mc.add(tgt, tgt, r.SCRATCH2.value) elif op == '*': - self.mc.mulld(tgt, tgt, acc) + self.mc.mulld(tgt, tgt, r.SCRATCH2.value) else: not_implemented("sum not implemented") return _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit