diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-04-29 18:03:15 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-04-29 18:03:15 +0200 |
| commit | f0859e64620807e2eb0660aa7d73395ab7ce4ab5 (patch) | |
| tree | e0c8a1c926ab062b88302f79a9039dd1079fadf3 /src | |
| parent | 737a93a77cd45f69882f51dc3e197b5db6029ebd (diff) | |
| download | box64-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.c | 9 |
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"); |