Skip to content

Commit

Permalink
Minor improvements of optimizations.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Pall committed Jul 19, 2021
1 parent 09547f9 commit 2182630
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/lj_asm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
6 changes: 6 additions & 0 deletions src/lj_opt_fold.c
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,7 @@ LJFOLDF(kfold_snew_kptr)
}

LJFOLD(SNEW any KINT)
LJFOLD(XSNEW any KINT)
LJFOLDF(kfold_snew_empty)
{
if (fright->i == 0)
Expand Down Expand Up @@ -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;
Expand All @@ -1311,6 +1316,7 @@ LJFOLDF(simplify_conv_narrow)
fins->op1 = op1;
fins->op2 = op2;
return RETRYFOLD;
#endif
}

/* Special CSE rule for CONV. */
Expand Down

0 comments on commit 2182630

Please sign in to comment.