about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-04-29 18:03:15 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-04-29 18:03:15 +0200
commitf0859e64620807e2eb0660aa7d73395ab7ce4ab5 (patch)
treee0c8a1c926ab062b88302f79a9039dd1079fadf3 /src
parent737a93a77cd45f69882f51dc3e197b5db6029ebd (diff)
downloadbox64-f0859e64620807e2eb0660aa7d73395ab7ce4ab5.tar.gz
box64-f0859e64620807e2eb0660aa7d73395ab7ce4ab5.zip
[ARM64_DYNAREC] Switched RSQRTPS to precise instead of aproximate
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_0f.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_0f.c b/src/dynarec/arm64/dynarec_arm64_0f.c
index 9f2ba58a..9b890f63 100644
--- a/src/dynarec/arm64/dynarec_arm64_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_0f.c
@@ -1081,9 +1081,10 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
         case 0x52:

             INST_NAME("RSQRTPS Gx, Ex");

             nextop = F8;

-            SKIPTEST(x1);

             GETEX(q0, 0, 0);

             GETGX_empty(q1);

+            #if 0

+            SKIPTEST(x1);

             v0 = fpu_get_scratch(dyn, ninst);

             // more precise

             if(q1==q0)

@@ -1094,6 +1095,12 @@ uintptr_t dynarec64_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             VFMULQS(v1, v0, q0);

             VFRSQRTSQS(v1, v1, v0);

             VFMULQS(q1, v1, v0);

+            #else

+            v0 = fpu_get_scratch(dyn, ninst);

+            VFMOVSQ_8(v0, 0b01110000);    //1.0f

+            VFSQRTQS(q1, q0);

+            VFDIVQS(q1, v0, q1);

+            #endif

             break;

         case 0x53:

             INST_NAME("RCPPS Gx, Ex");