about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-06-11 10:32:53 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-06-11 10:32:53 +0200
commit59caccfeae8fec11b2806c5d856611b9b98f285e (patch)
treeebe5b813ae86fb96f8cd5063a27cd37442eba96c /src
parentbbd3333b5f88ad46c74ed74fbcde70338e8f8c8a (diff)
downloadbox64-59caccfeae8fec11b2806c5d856611b9b98f285e.tar.gz
box64-59caccfeae8fec11b2806c5d856611b9b98f285e.zip
[ARM64_DYNAREC] Added AVX.66.0F38 02/0B opcodes
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
index a7979b14..92a5c0a4 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_66_0f38.c
@@ -76,7 +76,15 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
             }
             if(!vex.l) YMM0(gd);
             break;
-
+        case 0x01:
+            INST_NAME("VPHADDW Gx, Vx, Ex");
+            nextop = F8;
+            for(int l=0; l<1+vex.l; ++l) {
+                if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
+                VADDPQ_16(v0, v2, v1);
+            }
+            if(!vex.l) YMM0(gd);
+            break;
         case 0x02:
             INST_NAME("VPHADDD Gx, Vx, Ex");
             nextop = F8;
@@ -159,7 +167,15 @@ uintptr_t dynarec64_AVX_66_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip
             }
             if(!vex.l) YMM0(gd);
             break;
-
+        case 0x0B:
+            INST_NAME("VPMULHRSW Gx,Vx, Ex");
+            nextop = F8;
+            for(int l=0; l<1+vex.l; ++l) {
+                if(!l) { GETGX_empty_VXEX(v0, v2, v1, 0); } else { GETGY_empty_VYEY(v0, v2, v1); }
+                SQRDMULHQ_16(v0, v2, v1);
+            }
+            if(!vex.l) YMM0(gd);
+            break;
         case 0x0C:
             INST_NAME("VPERMILPS Gx, Vx, Ex");
             nextop = F8;