diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/x64runavx660f38.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/emu/x64runavx660f38.c b/src/emu/x64runavx660f38.c index 8139240f..5ececcb4 100644 --- a/src/emu/x64runavx660f38.c +++ b/src/emu/x64runavx660f38.c @@ -1390,7 +1390,7 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) GETVY; tmp8u = F8; //SIB // compute base - tmp64u = emu->regs[(tmp8u&0x7)+(rex.b<<3)].q[0]; + tmp64u = ((tmp8u&0x7)==5 && !(nextop&0xC0))?(F32S64):emu->regs[(tmp8u&0x7)+(rex.b<<3)].q[0]; if(nextop&0x40) tmp64u += F8S; else if(nextop&0x80) @@ -1457,7 +1457,7 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) GETVY; tmp8u = F8; //SIB // compute base - tmp64u = emu->regs[(tmp8u&0x7)+(rex.b<<3)].q[0]; + tmp64u = (((tmp8u&0x7)==5) && !(nextop&0xC0))?(F32S64):emu->regs[(tmp8u&0x7)+(rex.b<<3)].q[0]; if(nextop&0x40) tmp64u += F8S; else if(nextop&0x80) |