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.h18
1 files changed, 5 insertions, 13 deletions
diff --git a/src/lj_asm_arm.h b/src/lj_asm_arm.h
index d5a242e7..9ef785c3 100644
--- a/src/lj_asm_arm.h
+++ b/src/lj_asm_arm.h
@@ -693,7 +693,7 @@ static void asm_newref(ASMState *as, IRIns *ir)
693{ 693{
694 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_tab_newkey]; 694 const CCallInfo *ci = &lj_ir_callinfo[IRCALL_lj_tab_newkey];
695 IRRef args[3]; 695 IRRef args[3];
696 if (ir->r == RID_SINK) /* Sink newref. */ 696 if (ir->r == RID_SINK)
697 return; 697 return;
698 args[0] = ASMREF_L; /* lua_State *L */ 698 args[0] = ASMREF_L; /* lua_State *L */
699 args[1] = ir->op1; /* GCtab *t */ 699 args[1] = ir->op1; /* GCtab *t */
@@ -814,9 +814,7 @@ static void asm_fload(ASMState *as, IRIns *ir)
814 814
815static void asm_fstore(ASMState *as, IRIns *ir) 815static void asm_fstore(ASMState *as, IRIns *ir)
816{ 816{
817 if (ir->r == RID_SINK) { /* Sink store. */ 817 if (ir->r != RID_SINK) {
818 asm_snap_prep(as);
819 } else {
820 Reg src = ra_alloc1(as, ir->op2, RSET_GPR); 818 Reg src = ra_alloc1(as, ir->op2, RSET_GPR);
821 IRIns *irf = IR(ir->op1); 819 IRIns *irf = IR(ir->op1);
822 Reg idx = ra_alloc1(as, irf->op1, rset_exclude(RSET_GPR, src)); 820 Reg idx = ra_alloc1(as, irf->op1, rset_exclude(RSET_GPR, src));
@@ -838,9 +836,7 @@ static void asm_xload(ASMState *as, IRIns *ir)
838 836
839static void asm_xstore(ASMState *as, IRIns *ir, int32_t ofs) 837static void asm_xstore(ASMState *as, IRIns *ir, int32_t ofs)
840{ 838{
841 if (ir->r == RID_SINK) { /* Sink store. */ 839 if (ir->r != RID_SINK) {
842 asm_snap_prep(as);
843 } else {
844 Reg src = ra_alloc1(as, ir->op2, RSET_GPR); 840 Reg src = ra_alloc1(as, ir->op2, RSET_GPR);
845 asm_fusexref(as, asm_fxstoreins(ir), src, ir->op1, 841 asm_fusexref(as, asm_fxstoreins(ir), src, ir->op1,
846 rset_exclude(RSET_GPR, src), ofs); 842 rset_exclude(RSET_GPR, src), ofs);
@@ -882,9 +878,7 @@ static void asm_ahuvload(ASMState *as, IRIns *ir)
882 878
883static void asm_ahustore(ASMState *as, IRIns *ir) 879static void asm_ahustore(ASMState *as, IRIns *ir)
884{ 880{
885 if (ir->r == RID_SINK) { /* Sink store. */ 881 if (ir->r != RID_SINK) {
886 asm_snap_prep(as);
887 } else {
888 RegSet allow = RSET_GPR; 882 RegSet allow = RSET_GPR;
889 Reg idx, src = RID_NONE, type = RID_NONE; 883 Reg idx, src = RID_NONE, type = RID_NONE;
890 int32_t ofs = 0; 884 int32_t ofs = 0;
@@ -1392,9 +1386,7 @@ static void asm_hiop(ASMState *as, IRIns *ir)
1392 asm_fpmin_max(as, ir-1, (ir-1)->o == IR_MIN ? CC_HI : CC_LO); 1386 asm_fpmin_max(as, ir-1, (ir-1)->o == IR_MIN ? CC_HI : CC_LO);
1393 return; 1387 return;
1394 } else if ((ir-1)->o == IR_XSTORE) { 1388 } else if ((ir-1)->o == IR_XSTORE) {
1395 if ((ir-1)->r == RID_SINK) 1389 if ((ir-1)->r != RID_SINK)
1396 asm_snap_prep(as);
1397 else
1398 asm_xstore(as, ir, 4); 1390 asm_xstore(as, ir, 4);
1399 return; 1391 return;
1400 } 1392 }