diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-23 18:20:38 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-23 18:20:38 +0200 |
| commit | 223de50ec94de8b0bf0bce39fcd235c74992d135 (patch) | |
| tree | 7c26ae5d7e695ed49b336b8dfff05a417d54603d /src/emu/x64runavx0f.c | |
| parent | 5cfad2216584fae41c1575ca4034e2d24f3b0be2 (diff) | |
| download | box64-223de50ec94de8b0bf0bce39fcd235c74992d135.tar.gz box64-223de50ec94de8b0bf0bce39fcd235c74992d135.zip | |
[INTERP] Fex fixes and small cosmetic changes to some partial (V)MOV opcodes
Diffstat (limited to 'src/emu/x64runavx0f.c')
| -rw-r--r-- | src/emu/x64runavx0f.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/emu/x64runavx0f.c b/src/emu/x64runavx0f.c index 5412a743..8509f270 100644 --- a/src/emu/x64runavx0f.c +++ b/src/emu/x64runavx0f.c @@ -105,9 +105,11 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) break; case 0x13: /* VMOVLPS Ex, Gx */ nextop = F8; - GETEX(0); - GETGX; - EX->q[0] = GX->q[0]; + if(!MODREG) { + GETEX(0); + GETGX; + EX->q[0] = GX->q[0]; + } break; case 0x14: /* VUNPCKLPS Gx, Vx, Ex */ nextop = F8; @@ -155,7 +157,7 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) if(MODREG) { /* VMOVLHPS Gx, Vx, Ex */ GX->q[1] = EX->q[0]; } else { - GX->q[1] = EX->q[0]; /* MOVHPS Gx,Ex */ + GX->q[1] = EX->q[0]; /* VMOVHPS Gx, Vx, Ex */ } GX->q[0] = VX->q[0]; GY->u128 = 0; @@ -165,6 +167,10 @@ uintptr_t RunAVX_0F(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) GETEX(0); GETGX; EX->q[0] = GX->q[1]; + if(MODREG) { + GETEY; + EY->u128 = 0; + } break; case 0x28: /* VMOVAPS Gx, Ex */ |