diff options
author | Mike Pall <mike> | 2011-06-22 17:55:43 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-06-22 17:56:41 +0200 |
commit | e2246db688382ed69e5929f1e698b545e58b5035 (patch) | |
tree | c7be7254e4e15676ce064606c4fb024633974ab2 /src | |
parent | b6e4ffd079750937c3788ce1abc9ee18a2a2f839 (diff) | |
download | luajit-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.h | 2 |
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)) ? |