diff options
-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 | ||