summaryrefslogtreecommitdiff
path: root/src/lj_asm_arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_asm_arm.h')
-rw-r--r--src/lj_asm_arm.h9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h
index a618c8a9..77751ca9 100644
--- a/src/lj_asm_arm.h
+++ b/src/lj_asm_arm.h
@@ -584,8 +584,8 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge)
584 else 584 else
585 emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end); 585 emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end);
586 if (!irt_ispri(kt)) { 586 if (!irt_ispri(kt)) {
587 emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^khi, tmp+1, keyhi); 587 emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^k, tmp, key);
588 emit_nm(as, ARMI_CMP^k, tmp, key); 588 emit_nm(as, ARMI_CMP^khi, tmp+1, keyhi);
589 emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key)); 589 emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key));
590 } else { 590 } else {
591 emit_n(as, ARMI_CMP^khi, tmp); 591 emit_n(as, ARMI_CMP^khi, tmp);
@@ -674,10 +674,9 @@ static void asm_hrefk(ASMState *as, IRIns *ir)
674 (int32_t)ir_knum(irkey)->u32.hi, allow); 674 (int32_t)ir_knum(irkey)->u32.hi, allow);
675 emit_opk(as, ARMI_CMP, 0, key, 675 emit_opk(as, ARMI_CMP, 0, key,
676 (int32_t)ir_knum(irkey)->u32.lo, allow); 676 (int32_t)ir_knum(irkey)->u32.lo, allow);
677 } else if (ra_hasreg(key)) {
678 emit_n(as, ARMF_CC(ARMI_CMN, CC_EQ)|ARMI_K12|-irt_toitype(irkey->t), type);
679 emit_opk(as, ARMI_CMP, 0, key, irkey->i, allow);
680 } else { 677 } else {
678 if (ra_hasreg(key))
679 emit_opk(as, ARMF_CC(ARMI_CMP, CC_EQ), 0, key, irkey->i, allow);
681 emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type); 680 emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type);
682 } 681 }
683 emit_lso(as, ARMI_LDR, type, idx, kofs+4); 682 emit_lso(as, ARMI_LDR, type, idx, kofs+4);