about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-02-09 02:18:12 +0800
committerGitHub <noreply@github.com>2025-02-08 19:18:12 +0100
commit056bb38607d4a3e191cef0458c73dad962d2977d (patch)
tree056be5e5ff7988c688e470e179ab8622f0b2027b /src
parent1a01adb2efae4510c1efe46311071a4a121b206a (diff)
downloadbox64-056bb38607d4a3e191cef0458c73dad962d2977d.tar.gz
box64-056bb38607d4a3e191cef0458c73dad962d2977d.zip
[LA64_DYNAREC] Added more opcodes (#2333)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/la64/dynarec_la64_f20f.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/dynarec/la64/dynarec_la64_f20f.c b/src/dynarec/la64/dynarec_la64_f20f.c
index fcb32bdb..513cc492 100644
--- a/src/dynarec/la64/dynarec_la64_f20f.c
+++ b/src/dynarec/la64/dynarec_la64_f20f.c
@@ -304,6 +304,17 @@ uintptr_t dynarec64_F20F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int
                 VEXTRINS_D(v0, q0, 0x0); // v0[63:0] = q0[63:0]
             }
             break;
+        case 0x7C:
+            INST_NAME("HADDPS Gx, Ex");
+            nextop = F8;
+            GETGX(q0, 1);
+            GETEX(q1, 0, 1);
+            v0 = fpu_get_scratch(dyn);
+            v1 = fpu_get_scratch(dyn);
+            VPICKEV_W(v0, q1, q0);
+            VPICKOD_W(v1, q1, q0);
+            VFADD_S(q0, v0, v1);
+            break;
         case 0xC2:
             INST_NAME("CMPSD Gx, Ex, Ib");
             nextop = F8;