diff options
author | Mike Pall <mike> | 2012-07-02 22:37:00 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-02 22:37:00 +0200 |
commit | 264177b0d041fdea5e07091a0c585607e9b55828 (patch) | |
tree | 41b95d0c63a81b4f2a0719b014d6fdd640c82d5e /src/lj_asm_x86.h | |
parent | 7ae3832f2048edaa14c0050326aaa3ce2273975f (diff) | |
download | luajit-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.h | 10 |
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) { |