about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-06-24 16:05:26 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-06-24 16:05:26 +0200
commit71d49badccba11e50f47e623fcc69d15d99480f6 (patch)
tree83f93a04dc01f9f701d9197cf983f8a1bb9fb3d0 /src
parent3dfcc278e0f736b578718e663fff470fa6a89dab (diff)
downloadbox64-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.c4
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)