| ldrd CARG34, NODE:INS->key // STALL: early NODE:INS.
| ldrd CARG12, NODE:INS->val
| ldr NODE:INS, NODE:INS->next
- | cmp CARG3, STR:RC
- | checktpeq CARG4, LJ_TSTR
+ | checktp CARG4, LJ_TSTR
+ | cmpeq CARG3, STR:RC
| beq >5
| cmp NODE:INS, #0
| bne <3
| ldrd CARG12, NODE:INS->key // STALL: early NODE:INS.
| ldrd CARG34, NODE:INS->val
| ldr NODE:INS, NODE:INS->next
- | cmp CARG1, STR:RC
- | checktpeq CARG2, LJ_TSTR
+ | checktp CARG2, LJ_TSTR
+ | cmpeq CARG1, STR:RC
| bne >4
| checktp CARG4, LJ_TNIL
| beq >5
| ldrd CARG12, NODE:INS->key
| ldr CARG4, NODE:INS->val.it
| ldr NODE:CARG3, NODE:INS->next
- | cmp CARG1, STR:RC
- | checktpeq CARG2, LJ_TSTR
+ | checktp CARG2, LJ_TSTR
+ | cmpeq CARG1, STR:RC
| bne >5
| ldrb CARG2, TAB:RB->marked
| checktp CARG4, LJ_TNIL // Key found, but nil value?
else
emit_branch(as, ARMF_CC(ARMI_B, CC_EQ), l_end);
if (!irt_ispri(kt)) {
- emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^khi, tmp+1, keyhi);
- emit_nm(as, ARMI_CMP^k, tmp, key);
+ emit_nm(as, ARMF_CC(ARMI_CMP, CC_EQ)^k, tmp, key);
+ emit_nm(as, ARMI_CMP^khi, tmp+1, keyhi);
emit_lsox(as, ARMI_LDRD, tmp, dest, (int32_t)offsetof(Node, key));
} else {
emit_n(as, ARMI_CMP^khi, tmp);
(int32_t)ir_knum(irkey)->u32.hi, allow);
emit_opk(as, ARMI_CMP, 0, key,
(int32_t)ir_knum(irkey)->u32.lo, allow);
- } else if (ra_hasreg(key)) {
- emit_n(as, ARMF_CC(ARMI_CMN, CC_EQ)|ARMI_K12|-irt_toitype(irkey->t), type);
- emit_opk(as, ARMI_CMP, 0, key, irkey->i, allow);
} else {
+ if (ra_hasreg(key))
+ emit_opk(as, ARMF_CC(ARMI_CMP, CC_EQ), 0, key, irkey->i, allow);
emit_n(as, ARMI_CMN|ARMI_K12|-irt_toitype(irkey->t), type);
}
emit_lso(as, ARMI_LDR, type, idx, kofs+4);