diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c index fcdac324ff..cbbdae9a0e 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c @@ -1385,14 +1385,14 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip VMOVQDto(x4, v2, i); CBZw(x4, 4+4*4); SMOVQSto(x4, v1, i+l*2); - ADDx_REG_LSL(x4, ed, x4, wb1); + ADDz_REG_LSL(x4, ed, x4, wb1); VLD1_64(v0, i, x4); VMOVQDfrom(v2, i, xZR); } else for(int i=0; i<4; ++i) { VMOVSto(x4, v2, i); CBZw(x4, 4+4*4); SMOVQSto(x4, v1, i); - ADDx_REG_LSL(x4, ed, x4, wb1); + ADDz_REG_LSL(x4, ed, x4, wb1); VLD1_32(v0, i, x4); VMOVQSfrom(v2, i, xZR); } @@ -1440,7 +1440,7 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip VMOVSto(x4, v2, i); CBZw(x4, 4+4*4); VMOVQDto(x4, (i&2)?q1:v1, i&1); - ADDx_REG_LSL(x4, ed, x4, wb1); + ADDz_REG_LSL(x4, ed, x4, wb1); VLD1_32(v0, i, x4); VMOVQSfrom(v2, i, xZR); } @@ -1465,7 +1465,7 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip VMOVQDto(x4, v2, i); CBZw(x4, 4+4*4); VMOVQDto(x4, v1, i); - ADDx_REG_LSL(x4, ed, x4, wb1); + ADDz_REG_LSL(x4, ed, x4, wb1); VLD1_64(v0, i, x4); VMOVQDfrom(v2, i, xZR); } diff --git a/src/emu/x64runavx660f38.c b/src/emu/x64runavx660f38.c index 42e61f3203..f53c4b7a9c 100644 --- a/src/emu/x64runavx660f38.c +++ b/src/emu/x64runavx660f38.c @@ -1418,13 +1418,17 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) if(rex.w) { for(int i=0; i<2; ++i) if(VX->q[i]) { - GX->q[i] = *(uint64_t*)(tmp64u + (EX->sd[i]<sd[i]<q[i] = *(uint64_t*)data_addr; VX->q[i] = 0; } } else { for(int i=0; i<4; ++i) if(VX->ud[i]) { - GX->ud[i] = *(uint32_t*)(tmp64u + (EX->sd[i]<sd[i]<ud[i] = *(uint32_t*)data_addr; VX->ud[i] = 0; } } @@ -1438,13 +1442,17 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) if(rex.w) { for(int i=0; i<2; ++i) if(VY->q[i]) { - GY->q[i] = *(uint64_t*)(tmp64u + (EX->sd[2+i]<sd[2+i]<q[i] = *(uint64_t*)data_addr; VY->q[i] = 0; } } else { for(int i=0; i<4; ++i) if(VY->ud[i]) { - GY->ud[i] = *(uint32_t*)(tmp64u + (EY->sd[i]<sd[i]<ud[i] = *(uint32_t*)data_addr; VY->ud[i] = 0; } } @@ -1488,13 +1496,17 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) if(rex.w) { for(int i=0; i<2; ++i) if(VX->q[i]) { - GX->q[i] = *(uint64_t*)(tmp64u + (EX->sq[i]<sq[i]<q[i] = *(uint64_t*)data_addr; VX->q[i] = 0; } } else { for(int i=0; i<(vex.l?4:2); ++i) if(VX->ud[i]) { - GX->ud[i] = *(uint32_t*)(tmp64u + (((i>1)?EY->sq[i-2]:EX->sq[i])<1)?EY->sq[i-2]:EX->sq[i])<ud[i] = *(uint32_t*)data_addr; VX->ud[i] = 0; } } @@ -1507,7 +1519,9 @@ uintptr_t RunAVX_660F38(x64emu_t *emu, vex_t vex, uintptr_t addr, int *step) if(rex.w) { for(int i=0; i<2; ++i) if(VY->q[i]) { - GY->q[i] = *(uint64_t*)(tmp64u + (EY->sq[i]<sq[i]<q[i] = *(uint64_t*)data_addr; VY->q[i] = 0; } } else {