From 71d49badccba11e50f47e623fcc69d15d99480f6 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 24 Jun 2024 16:05:26 +0200 Subject: Fixed AVX.66.0F38 90-93 opcodes (certain special cases) --- src/emu/x64runavx660f38.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') 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) -- cgit 1.4.1