aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2018-05-20 12:45:01 +0200
committerMike Pall <mike>2018-05-20 12:45:01 +0200
commitb708297aba2b07648bddd16867e44efc9d72666b (patch)
tree7fbcea6fe01c114f88a0d4dde243d6753a224c36
parent362f034c1b91d52ea2cf971314ed4e0c24348bff (diff)
parentfb5e522fbc0750c838ef6a926b11c5d870826183 (diff)
downloadluajit-b708297aba2b07648bddd16867e44efc9d72666b.tar.gz
luajit-b708297aba2b07648bddd16867e44efc9d72666b.tar.bz2
luajit-b708297aba2b07648bddd16867e44efc9d72666b.zip
Merge branch 'master' into v2.1
-rw-r--r--src/lj_emit_x86.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lj_emit_x86.h b/src/lj_emit_x86.h
index 5b139bd3..b3dc4ea5 100644
--- a/src/lj_emit_x86.h
+++ b/src/lj_emit_x86.h
@@ -274,10 +274,12 @@ static void emit_movmroi(ASMState *as, Reg base, int32_t ofs, int32_t i)
274/* mov r, i / xor r, r */ 274/* mov r, i / xor r, r */
275static void emit_loadi(ASMState *as, Reg r, int32_t i) 275static void emit_loadi(ASMState *as, Reg r, int32_t i)
276{ 276{
277 /* XOR r,r is shorter, but modifies the flags. This is bad for HIOP. */ 277 /* XOR r,r is shorter, but modifies the flags. This is bad for HIOP/jcc. */
278 if (i == 0 && !(LJ_32 && (IR(as->curins)->o == IR_HIOP || 278 if (i == 0 && !(LJ_32 && (IR(as->curins)->o == IR_HIOP ||
279 (as->curins+1 < as->T->nins && 279 (as->curins+1 < as->T->nins &&
280 IR(as->curins+1)->o == IR_HIOP)))) { 280 IR(as->curins+1)->o == IR_HIOP))) &&
281 !((*as->mcp == 0x0f && (as->mcp[1] & 0xf0) == XI_JCCn) ||
282 (*as->mcp & 0xf0) == XI_JCCs)) {
281 emit_rr(as, XO_ARITH(XOg_XOR), r, r); 283 emit_rr(as, XO_ARITH(XOg_XOR), r, r);
282 } else { 284 } else {
283 MCode *p = as->mcp; 285 MCode *p = as->mcp;