diff options
| author | Mike Pall <mike> | 2025-07-24 15:38:45 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2025-07-24 15:38:45 +0200 |
| commit | c92d0cb19263e7e302b4740ba6617a32c201c613 (patch) | |
| tree | 0a2665832d62c1fbf076b94fe6a5ce354bac1280 /src | |
| parent | e3fa3c48d8a4aadcf86429e9f7f6f1171914b15a (diff) | |
| download | luajit-c92d0cb19263e7e302b4740ba6617a32c201c613.tar.gz luajit-c92d0cb19263e7e302b4740ba6617a32c201c613.tar.bz2 luajit-c92d0cb19263e7e302b4740ba6617a32c201c613.zip | |
x86/x64: Don't use undefined MUL/IMUL zero flag.
Reported by VrIgHtEr. #1376
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm_x86.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_asm_x86.h b/src/lj_asm_x86.h index 239066d4..8b6ce479 100644 --- a/src/lj_asm_x86.h +++ b/src/lj_asm_x86.h | |||
| @@ -1841,7 +1841,8 @@ static void asm_intarith(ASMState *as, IRIns *ir, x86Arith xa) | |||
| 1841 | RegSet allow = RSET_GPR; | 1841 | RegSet allow = RSET_GPR; |
| 1842 | Reg dest, right; | 1842 | Reg dest, right; |
| 1843 | int32_t k = 0; | 1843 | int32_t k = 0; |
| 1844 | if (as->flagmcp == as->mcp) { /* Drop test r,r instruction. */ | 1844 | if (as->flagmcp == as->mcp && xa != XOg_X_IMUL) { |
| 1845 | /* Drop test r,r instruction. */ | ||
| 1845 | MCode *p = as->mcp + ((LJ_64 && *as->mcp < XI_TESTb) ? 3 : 2); | 1846 | MCode *p = as->mcp + ((LJ_64 && *as->mcp < XI_TESTb) ? 3 : 2); |
| 1846 | MCode *q = p[0] == 0x0f ? p+1 : p; | 1847 | MCode *q = p[0] == 0x0f ? p+1 : p; |
| 1847 | if ((*q & 15) < 14) { | 1848 | if ((*q & 15) < 14) { |
