[ARM64_DYNAREC] Small rework on VFMAD*S[S/D] opcodes

This commit is contained in:
ptitSeb 2025-04-30 17:50:44 +02:00
parent f5e93a14a2
commit 56982e4c05

View File

@ -1547,12 +1547,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
nextop = F8;
GETGX(v0, 1);
GETVX(v2, 0);
if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
q0 = fpu_get_scratch(dyn, ninst);
if(rex.w) {
GETEXSD(v1, 0, 0);
FMADD_64(q0, v2, v1, v0);
VMOVeD(v0, 0, q0, 0);
} else {
GETEXSS(v1, 0, 0);
FMADD_32(q0, v2, v1, v0);
VMOVeS(v0, 0, q0, 0);
}
@ -1670,12 +1671,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
nextop = F8;
GETGX(v0, 1);
GETVX(v2, 0);
if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
q0 = fpu_get_scratch(dyn, ninst);
if(rex.w) {
GETEXSD(v1, 0, 0);
FMADD_64(q0, v1, v0, v2);
VMOVeD(v0, 0, q0, 0);
} else {
GETEXSS(v1, 0, 0);
FMADD_32(q0, v1, v0, v2);
VMOVeS(v0, 0, q0, 0);
}
@ -1842,12 +1844,13 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
nextop = F8;
GETGX(v0, 1);
GETVX(v2, 0);
if(rex.w) {GETEXSD(v1, 0, 0);} else {GETEXSS(v1, 0, 0);}
q0 = fpu_get_scratch(dyn, ninst);
if(rex.w) {
GETEXSD(v1, 0, 0);
FMADD_64(q0, v0, v1, v2);
VMOVeD(v0, 0, q0, 0);
} else {
GETEXSS(v1, 0, 0);
FMADD_32(q0, v0, v1, v2);
VMOVeS(v0, 0, q0, 0);
}