summaryrefslogtreecommitdiff
path: root/src/lj_asm_x86.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_asm_x86.h')
-rw-r--r--src/lj_asm_x86.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index c4ebdb1f..7647b03f 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -1273,11 +1273,12 @@ static void asm_fxstore(ASMState *as, IRIns *ir)
1273 } 1273 }
1274 rset_clear(allow, src); 1274 rset_clear(allow, src);
1275 } 1275 }
1276 if (ir->o == IR_FSTORE) 1276 if (ir->o == IR_FSTORE) {
1277 asm_fusefref(as, IR(ir->op1), allow); 1277 asm_fusefref(as, IR(ir->op1), allow);
1278 else 1278 } else {
1279 asm_fusexref(as, ir->op1, allow); 1279 asm_fusexref(as, ir->op1, allow);
1280 /* ir->op2 is ignored -- unaligned stores are ok on x86. */ 1280 if (LJ_32 && ir->o == IR_HIOP) as->mrm.ofs += 4;
1281 }
1281 if (ra_hasreg(src)) { 1282 if (ra_hasreg(src)) {
1282 x86Op xo; 1283 x86Op xo;
1283 switch (irt_type(ir->t)) { 1284 switch (irt_type(ir->t)) {
@@ -2249,6 +2250,9 @@ static void asm_hiop(ASMState *as, IRIns *ir)
2249 } else if ((ir-1)->o <= IR_NE) { /* 64 bit integer comparisons. ORDER IR. */ 2250 } else if ((ir-1)->o <= IR_NE) { /* 64 bit integer comparisons. ORDER IR. */
2250 asm_comp_int64(as, ir); 2251 asm_comp_int64(as, ir);
2251 return; 2252 return;
2253 } else if ((ir-1)->o == IR_XSTORE) {
2254 asm_fxstore(as, ir);
2255 return;
2252 } 2256 }
2253 if (!usehi) return; /* Skip unused hiword op for all remaining ops. */ 2257 if (!usehi) return; /* Skip unused hiword op for all remaining ops. */
2254 switch ((ir-1)->o) { 2258 switch ((ir-1)->o) {