Author: edelsohn Branch: ppc-backend-2 Changeset: r55417:5f8c8583ec74 Date: 2012-06-05 12:16 -0400 http://bitbucket.org/pypy/pypy/changeset/5f8c8583ec74/
Log: (edelsohn, bivab): Support FP compare in emit_guard_value. Use FLOAT_INT_CONVERSION area to spill f0. diff --git a/pypy/jit/backend/ppc/opassembler.py b/pypy/jit/backend/ppc/opassembler.py --- a/pypy/jit/backend/ppc/opassembler.py +++ b/pypy/jit/backend/ppc/opassembler.py @@ -285,7 +285,7 @@ self.mc.cmp_op(0, l0.value, l1.value) elif l0.is_fp_reg(): assert l1.is_fp_reg() - self.mc.cmp_op(0, l0.value, l1.value) + self.mc.cmp_op(0, l0.value, l1.value, fp=True) self._emit_guard(op, failargs, c.NE) emit_guard_nonnull = emit_guard_true @@ -357,11 +357,11 @@ elif loc.is_stack() or loc.is_imm() or loc.is_imm_float(): if box.type == FLOAT: adr = self.fail_boxes_float.get_addr_for_num(i) - self.mc.stfd(r.f0.value, r.SPP.value, 0) + self.mc.stfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) self.mov_loc_loc(loc, r.f0) self.mc.load_imm(r.SCRATCH, adr) self.mc.stfdx(r.f0.value, 0, r.SCRATCH.value) - self.mc.lfd(r.f0.value, r.SPP.value, 0) + self.mc.lfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) elif box.type == REF or box.type == INT: if box.type == REF: adr = self.fail_boxes_ptr.get_addr_for_num(i) @@ -494,8 +494,10 @@ offset = param_offset + i * WORD if arg is not None: if arg.type == FLOAT: + self.mc.stfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) self.regalloc_mov(arg, r.f0) self.mc.stfd(r.f0.value, r.SP.value, offset) + self.mc.lfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) else: self.regalloc_mov(arg, r.SCRATCH) self.mc.store(r.SCRATCH.value, r.SP.value, offset) @@ -529,7 +531,9 @@ adr = r.r11 # remap values stored in core registers + self.mc.stfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) remap_frame_layout(self, float_locs, float_regs, r.f0) + self.mc.lfd(r.f0.value, r.SPP.value, FORCE_INDEX_OFS + WORD) remap_frame_layout(self, non_float_locs, non_float_regs, r.SCRATCH) # the actual call _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit