diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm_arm.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h index 5a628b3b..3147ae39 100644 --- a/src/lj_asm_arm.h +++ b/src/lj_asm_arm.h | |||
| @@ -1642,13 +1642,13 @@ static void asm_intmin_max(ASMState *as, IRIns *ir, int cc) | |||
| 1642 | kcmp = 0; | 1642 | kcmp = 0; |
| 1643 | right = ra_alloc1(as, ir->op2, rset_exclude(RSET_GPR, left)); | 1643 | right = ra_alloc1(as, ir->op2, rset_exclude(RSET_GPR, left)); |
| 1644 | } | 1644 | } |
| 1645 | if (dest != right) { | 1645 | if (kmov || dest != right) { |
| 1646 | emit_dm(as, ARMF_CC(ARMI_MOV, cc)^kmov, dest, right); | 1646 | emit_dm(as, ARMF_CC(ARMI_MOV, cc)^kmov, dest, right); |
| 1647 | cc ^= 1; /* Must use opposite conditions for paired moves. */ | 1647 | cc ^= 1; /* Must use opposite conditions for paired moves. */ |
| 1648 | } else { | 1648 | } else { |
| 1649 | cc ^= (CC_LT^CC_GT); /* Otherwise may swap CC_LT <-> CC_GT. */ | 1649 | cc ^= (CC_LT^CC_GT); /* Otherwise may swap CC_LT <-> CC_GT. */ |
| 1650 | } | 1650 | } |
| 1651 | if (dest != left) emit_dm(as, ARMF_CC(ARMI_MOV, cc)^kmov, dest, left); | 1651 | if (dest != left) emit_dm(as, ARMF_CC(ARMI_MOV, cc), dest, left); |
| 1652 | emit_nm(as, ARMI_CMP^kcmp, left, right); | 1652 | emit_nm(as, ARMI_CMP^kcmp, left, right); |
| 1653 | } | 1653 | } |
| 1654 | 1654 | ||
