about summary refs log tree commit diff stats
path: root/src/dynarec/la64/dynarec_la64_f30f.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynarec/la64/dynarec_la64_f30f.c')
-rw-r--r--src/dynarec/la64/dynarec_la64_f30f.c18
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: