about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-04-11 17:49:49 +0000
committerptitSeb <sebastien.chev@gmail.com>2023-04-11 17:49:49 +0000
commitfceaac48a6fa5e3d54ed05fee33257752fcc8303 (patch)
treeeefa57ece3149dcdc681a8e078dda061c1150ee5 /src
parent4330b61217e80d127644e849c52124bde5c6e711 (diff)
downloadbox64-fceaac48a6fa5e3d54ed05fee33257752fcc8303.tar.gz
box64-fceaac48a6fa5e3d54ed05fee33257752fcc8303.zip
[RV64_DYNAREC] Added 0F 14/15 opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_0f.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_0f.c b/src/dynarec/rv64/dynarec_rv64_0f.c
index bb8e7834..40a15310 100644
--- a/src/dynarec/rv64/dynarec_rv64_0f.c
+++ b/src/dynarec/rv64/dynarec_rv64_0f.c
@@ -136,6 +136,33 @@ uintptr_t dynarec64_0F(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             if(!MODREG)
                 SMWRITE2();
             break;
+
+        case 0x14:
+            INST_NAME("UNPCKLPS Gx,Ex");
+            nextop = F8;
+            GETGX(x1);
+            GETEX(x2, 0);
+            LWU(x5, gback, 1*4);
+            LWU(x3, wback, fixedaddress+0);
+            LWU(x4, wback, fixedaddress+4);
+            SW(x4, gback, 3*4);
+            SW(x5, gback, 2*4);
+            SW(x3, gback, 1*4);
+            break;
+        case 0x15:
+            INST_NAME("UNPCKHPS Gx,Ex");
+            nextop = F8;
+            GETGX(x1);
+            GETEX(x2, 0);
+            LWU(x3, wback, fixedaddress+2*4);
+            LWU(x4, wback, fixedaddress+3*4);
+            LWU(x5, gback, 2*4);
+            LWU(x6, gback, 3*4);
+            SW(x5, gback, 0*4);
+            SW(x3, gback, 1*4);
+            SW(x6, gback, 2*4);
+            SW(x4, gback, 3*4);
+            break;
         case 0x16:
             nextop = F8;
             if(MODREG) {