ARM: Fix calls to hard-float floor/ceil/trunc.

This commit is contained in:
Mike Pall 2012-08-19 18:39:47 +02:00
parent d61e9e5d89
commit f58a84d0bc

View File

@ -1560,8 +1560,9 @@ static void asm_callid(ASMState *as, IRIns *ir, IRCallID id)
static void asm_callround(ASMState *as, IRIns *ir, int id) static void asm_callround(ASMState *as, IRIns *ir, int id)
{ {
/* The modified regs must match with the *.dasc implementation. */ /* The modified regs must match with the *.dasc implementation. */
RegSet drop = RID2RSET(RID_D1)|RID2RSET(RID_D2)| RegSet drop = RID2RSET(RID_D0)|RID2RSET(RID_D1)|RID2RSET(RID_D2)|
RID2RSET(RID_R0)|RID2RSET(RID_R1); RID2RSET(RID_R0)|RID2RSET(RID_R1);
if (ra_hasreg(ir->r)) rset_clear(drop, ir->r);
ra_evictset(as, drop); ra_evictset(as, drop);
ra_destreg(as, ir, RID_FPRET); ra_destreg(as, ir, RID_FPRET);
emit_call(as, id == IRFPM_FLOOR ? (void *)lj_vm_floor_hf : emit_call(as, id == IRFPM_FLOOR ? (void *)lj_vm_floor_hf :