aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2022-07-27 11:32:33 +0200
committerMike Pall <mike>2022-07-27 11:32:33 +0200
commite1339aed3db2fb8488a170383fc456fe04879709 (patch)
treebb32e3ef9407341e8e1fde8ade3882178d89fb15
parent3065c910ad6027031aabe2dfd3c26a3d0f014b4f (diff)
downloadluajit-e1339aed3db2fb8488a170383fc456fe04879709.tar.gz
luajit-e1339aed3db2fb8488a170383fc456fe04879709.tar.bz2
luajit-e1339aed3db2fb8488a170383fc456fe04879709.zip
x86/x64: Limit VLOAD fusion to simple cases.
Reported by ccagml.
Diffstat (limited to '')
-rw-r--r--src/lj_asm_x86.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index 4465efa2..2bf9d939 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -485,7 +485,8 @@ static Reg asm_fuseload(ASMState *as, IRRef ref, RegSet allow)
485 asm_fusexref(as, ir->op1, xallow); 485 asm_fusexref(as, ir->op1, xallow);
486 return RID_MRM; 486 return RID_MRM;
487 } 487 }
488 } else if (ir->o == IR_VLOAD && !(LJ_GC64 && irt_isaddr(ir->t))) { 488 } else if (ir->o == IR_VLOAD && IR(ir->op1)->o == IR_AREF &&
489 !(LJ_GC64 && irt_isaddr(ir->t))) {
489 asm_fuseahuref(as, ir->op1, xallow); 490 asm_fuseahuref(as, ir->op1, xallow);
490 as->mrm.ofs += 8 * ir->op2; 491 as->mrm.ofs += 8 * ir->op2;
491 return RID_MRM; 492 return RID_MRM;