Minor improvements of optimizations.

master
Mike Pall 2021-07-19 16:50:05 +02:00
parent 09547f9f6e
commit 2182630903
2 changed files with 17 additions and 1 deletions

View File

@ -2319,13 +2319,23 @@ static void asm_setup_regsp(ASMState *as)
}
/* fallthrough */ /* for integer POW */
case IR_DIV: case IR_MOD:
if (!irt_isnum(ir->t)) {
if ((LJ_64 && LJ_SOFTFP) || !irt_isnum(ir->t)) {
ir->prev = REGSP_HINT(RID_RET);
if (inloop)
as->modset |= (RSET_SCRATCH & RSET_GPR);
continue;
}
break;
#if LJ_64 && LJ_SOFTFP
case IR_ADD: case IR_SUB: case IR_MUL:
if (irt_isnum(ir->t)) {
ir->prev = REGSP_HINT(RID_RET);
if (inloop)
as->modset |= (RSET_SCRATCH & RSET_GPR);
continue;
}
break;
#endif
case IR_FPMATH:
#if LJ_TARGET_X86ORX64
if (ir->op2 <= IRFPM_TRUNC) {

View File

@ -514,6 +514,7 @@ LJFOLDF(kfold_snew_kptr)
}
LJFOLD(SNEW any KINT)
LJFOLD(XSNEW any KINT)
LJFOLDF(kfold_snew_empty)
{
if (fright->i == 0)
@ -1301,6 +1302,10 @@ LJFOLD(CONV SUB IRCONV_U32_U64)
LJFOLD(CONV MUL IRCONV_U32_U64)
LJFOLDF(simplify_conv_narrow)
{
#if LJ_64
UNUSED(J);
return NEXTFOLD;
#else
IROp op = (IROp)fleft->o;
IRType t = irt_type(fins->t);
IRRef op1 = fleft->op1, op2 = fleft->op2, mode = fins->op2;
@ -1311,6 +1316,7 @@ LJFOLDF(simplify_conv_narrow)
fins->op1 = op1;
fins->op2 = op2;
return RETRYFOLD;
#endif
}
/* Special CSE rule for CONV. */