diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-06-24 16:05:26 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-06-24 16:05:26 +0200 |
| commit | 71d49badccba11e50f47e623fcc69d15d99480f6 (patch) | |
| tree | 83f93a04dc01f9f701d9197cf983f8a1bb9fb3d0 /src | |
| parent | 3dfcc278e0f736b578718e663fff470fa6a89dab (diff) | |
| download | box64-71d49badccba11e50f47e623fcc69d15d99480f6.tar.gz box64-71d49badccba11e50f47e623fcc69d15d99480f6.zip | |
Fixed AVX.66.0F38 90-93 opcodes (certain special cases)
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) |