diff options
Diffstat (limited to 'src/dynarec/la64/dynarec_la64_f30f.c')
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_f30f.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/dynarec/la64/dynarec_la64_f30f.c b/src/dynarec/la64/dynarec_la64_f30f.c index b9b028b7..a09f4b2d 100644 --- a/src/dynarec/la64/dynarec_la64_f30f.c +++ b/src/dynarec/la64/dynarec_la64_f30f.c @@ -188,11 +188,11 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int GETGX(v0, 1); GETEXSS(v1, 0, 0); q0 = fpu_get_scratch(dyn); - q1 = fpu_get_scratch(dyn); - LU12I_W(x3, 0x3f800); // 1.0f - MOVGR2FR_W(q0, x3); - FSQRT_S(q1, v1); - FDIV_S(q0, q0, q1); + if(cpuext.frecipe){ + FRSQRTE_S(q0, v1); + }else{ + FRSQRT_S(q0, v1); + } VEXTRINS_W(v0, q0, 0); break; case 0x53: @@ -201,9 +201,11 @@ uintptr_t dynarec64_F30F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int GETGX(v0, 1); GETEXSS(v1, 0, 0); d1 = fpu_get_scratch(dyn); - LU12I_W(x3, 0x3f800); // 1.0f - MOVGR2FR_W(d1, x3); - FDIV_S(d1, d1, v1); + if(cpuext.frecipe){ + FRECIPE_S(d1, v1); + }else{ + FRECIP_S(d1, v1); + } VEXTRINS_W(v0, d1, 0); break; case 0x58: |