]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
MIPS: Fix calls to floor/ceil/trunc.
authorMike Pall <mike>
Sun, 19 Aug 2012 16:41:34 +0000 (18:41 +0200)
committerMike Pall <mike>
Sun, 19 Aug 2012 16:41:34 +0000 (18:41 +0200)
src/lj_asm_mips.h
src/vm_mips.dasc

index 6163882e4f1c4111e8740c639c9a0120d65a4ff1..299b4439c5c462df4e0dcdbfd58e9fc378859f53 100644 (file)
@@ -364,15 +364,13 @@ static void asm_callid(ASMState *as, IRIns *ir, IRCallID id)
 static void asm_callround(ASMState *as, IRIns *ir, IRCallID id)
 {
   /* The modified regs must match with the *.dasc implementation. */
-  RegSet drop = RID2RSET(RID_R1)|RID2RSET(RID_R12)|RID2RSET(RID_F2)|
-               RID2RSET(RID_F4)|RID2RSET(RID_F12)|RID2RSET(RID_F14);
-  const CCallInfo *ci = &lj_ir_callinfo[id];
-  IRRef args[2];
-  args[0] = ir->op1;
-  args[1] = ir->op2;
+  RegSet drop = RID2RSET(RID_R1)|RID2RSET(RID_R12)|RID2RSET(RID_FPRET)|
+               RID2RSET(RID_F2)|RID2RSET(RID_F4)|RID2RSET(REGARG_FIRSTFPR);
+  if (ra_hasreg(ir->r)) rset_clear(drop, ir->r);
   ra_evictset(as, drop);
   ra_destreg(as, ir, RID_FPRET);
-  asm_gencall(as, ci, args);
+  emit_call(as, (void *)lj_ir_callinfo[id].func);
+  ra_leftov(as, REGARG_FIRSTFPR, ir->op1);
 }
 
 /* -- Returns ------------------------------------------------------------- */
index 23692e34f77eead57bc2d4630d9b6ed84081c5dc..46038c365a4bd2badd9f9a7608c909d427391ee7 100644 (file)
@@ -2154,7 +2154,7 @@ static void build_subroutines(BuildCtx *ctx)
   |//-- Math helper functions ----------------------------------------------
   |//-----------------------------------------------------------------------
   |
-  |// Modifies AT, TMP0, FRET1, FRET2, f4. Keeps all others incl. FARG1, FARG2.
+  |// Modifies AT, TMP0, FRET1, FRET2, f4. Keeps all others incl. FARG1.
   |.macro vm_round, func
   |  lui TMP0, 0x4330                  // Hiword of 2^52 (double).
   |  mtc1 r0, f4