diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c index 3d9a213b..c795b99e 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
| @@ -1556,6 +1556,9 @@ static void asm_setup_regsp(ASMState *as) | |||
| 1556 | if (inloop) | 1556 | if (inloop) |
| 1557 | as->modset = RSET_SCRATCH; | 1557 | as->modset = RSET_SCRATCH; |
| 1558 | break; | 1558 | break; |
| 1559 | #if !LJ_TARGET_X86ORX64 && !LJ_SOFTFP | ||
| 1560 | case IR_ATAN2: case IR_LDEXP: | ||
| 1561 | #endif | ||
| 1559 | case IR_POW: | 1562 | case IR_POW: |
| 1560 | if (!LJ_SOFTFP && irt_isnum(ir->t)) { | 1563 | if (!LJ_SOFTFP && irt_isnum(ir->t)) { |
| 1561 | #if LJ_TARGET_X86ORX64 | 1564 | #if LJ_TARGET_X86ORX64 |
| @@ -1571,14 +1574,12 @@ static void asm_setup_regsp(ASMState *as) | |||
| 1571 | } | 1574 | } |
| 1572 | /* fallthrough for integer POW */ | 1575 | /* fallthrough for integer POW */ |
| 1573 | case IR_DIV: case IR_MOD: | 1576 | case IR_DIV: case IR_MOD: |
| 1574 | #if LJ_64 && LJ_HASFFI | ||
| 1575 | if (!irt_isnum(ir->t)) { | 1577 | if (!irt_isnum(ir->t)) { |
| 1576 | ir->prev = REGSP_HINT(RID_RET); | 1578 | ir->prev = REGSP_HINT(RID_RET); |
| 1577 | if (inloop) | 1579 | if (inloop) |
| 1578 | as->modset |= (RSET_SCRATCH & RSET_GPR); | 1580 | as->modset |= (RSET_SCRATCH & RSET_GPR); |
| 1579 | continue; | 1581 | continue; |
| 1580 | } | 1582 | } |
| 1581 | #endif | ||
| 1582 | break; | 1583 | break; |
| 1583 | case IR_FPMATH: | 1584 | case IR_FPMATH: |
| 1584 | #if LJ_TARGET_X86ORX64 | 1585 | #if LJ_TARGET_X86ORX64 |
