aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-06-22 17:55:43 +0200
committerMike Pall <mike>2011-06-22 17:56:41 +0200
commite2246db688382ed69e5929f1e698b545e58b5035 (patch)
treec7be7254e4e15676ce064606c4fb024633974ab2 /src
parentb6e4ffd079750937c3788ce1abc9ee18a2a2f839 (diff)
downloadluajit-e2246db688382ed69e5929f1e698b545e58b5035.tar.gz
luajit-e2246db688382ed69e5929f1e698b545e58b5035.tar.bz2
luajit-e2246db688382ed69e5929f1e698b545e58b5035.zip
x86/x64: Fix fusion of comparisons with u8/u16 XLOAD.
Diffstat (limited to 'src')
-rw-r--r--src/lj_asm_x86.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h
index e5bc4a0e..ba28792d 100644
--- a/src/lj_asm_x86.h
+++ b/src/lj_asm_x86.h
@@ -2037,6 +2037,8 @@ static void asm_comp(ASMState *as, IRIns *ir, uint32_t cc)
2037 left = asm_fuseload(as, lref, RSET_GPR); 2037 left = asm_fuseload(as, lref, RSET_GPR);
2038 irl->t = origt; 2038 irl->t = origt;
2039 if (left == RID_MRM) { /* Fusion succeeded? */ 2039 if (left == RID_MRM) { /* Fusion succeeded? */
2040 if (irt_isu8(irl->t) || irt_isu16(irl->t))
2041 cc >>= 4; /* Need unsigned compare. */
2040 asm_guardcc(as, cc); 2042 asm_guardcc(as, cc);
2041 emit_i8(as, imm); 2043 emit_i8(as, imm);
2042 emit_mrm(as, (irt_isi8(origt) || irt_isu8(origt)) ? 2044 emit_mrm(as, (irt_isi8(origt) || irt_isu8(origt)) ?