Author: David Schneider <[email protected]>
Branch: arm-backend-2
Changeset: r51309:bb83f459ff90
Date: 2012-01-13 14:58 +0100
http://bitbucket.org/pypy/pypy/changeset/bb83f459ff90/
Log: Implement case of moving a const float to the stack
diff --git a/pypy/jit/backend/arm/assembler.py
b/pypy/jit/backend/arm/assembler.py
--- a/pypy/jit/backend/arm/assembler.py
+++ b/pypy/jit/backend/arm/assembler.py
@@ -856,12 +856,18 @@
assert 0, 'unsupported case'
def _mov_imm_float_to_loc(self, prev_loc, loc, cond=c.AL):
- if not loc.is_vfp_reg():
+ if loc.is_vfp_reg():
+ self.mc.PUSH([r.ip.value], cond=cond)
+ self.mc.gen_load_int(r.ip.value, prev_loc.getint(), cond=cond)
+ self.mc.VLDR(loc.value, r.ip.value, cond=cond)
+ self.mc.POP([r.ip.value], cond=cond)
+ elif loc.is_stack():
+ self.regalloc_push(r.vfp_ip)
+ self.regalloc_mov(prev_loc, r.vfp_ip, cond)
+ self.regalloc_mov(r.vfp_ip, loc, cond)
+ self.regalloc_pop(r.vfp_ip)
+ else:
assert 0, 'unsupported case'
- self.mc.PUSH([r.ip.value], cond=cond)
- self.mc.gen_load_int(r.ip.value, prev_loc.getint(), cond=cond)
- self.mc.VLDR(loc.value, r.ip.value, cond=cond)
- self.mc.POP([r.ip.value], cond=cond)
def _mov_vfp_reg_to_loc(self, prev_loc, loc, cond=c.AL):
if loc.is_vfp_reg():
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit