[pypy-commit] pypy ppc-backend-2: (edelsohn, bivab): Support FP compare in emit_guard_value.
edelsohn
noreply at buildbot.pypy.org
Tue Jun 5 18:17:08 CEST 2012
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
More information about the pypy-commit
mailing list