summaryrefslogtreecommitdiff
path: root/src/lj_asm_x86.h
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-02 22:37:00 +0200
committerMike Pall <mike>2012-07-02 22:37:00 +0200
commit264177b0d041fdea5e07091a0c585607e9b55828 (patch)
tree41b95d0c63a81b4f2a0719b014d6fdd640c82d5e /src/lj_asm_x86.h
parent7ae3832f2048edaa14c0050326aaa3ce2273975f (diff)
downloadluajit-264177b0d041fdea5e07091a0c585607e9b55828.tar.gz
luajit-264177b0d041fdea5e07091a0c585607e9b55828.tar.bz2
luajit-264177b0d041fdea5e07091a0c585607e9b55828.zip
Use HIOP for XSTORE in SPLIT pass.
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) {