about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-06-11 15:07:10 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-06-11 15:07:10 +0200
commitb246133b3b46b3257fb1f66ab4b6125089560870 (patch)
treeb35b9c6e53530453282fc2359b0620f238b5c4bf /src
parent5b28d7bc0360ebf14f1e267aeed314071989ec61 (diff)
downloadbox64-b246133b3b46b3257fb1f66ab4b6125089560870.tar.gz
box64-b246133b3b46b3257fb1f66ab4b6125089560870.zip
[ARM64_DYNAREC] Added AVX.0F 77 256bits opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_avx_0f.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_avx_0f.c b/src/dynarec/arm64/dynarec_arm64_avx_0f.c
index fabdc8a8..cfe57d6f 100644
--- a/src/dynarec/arm64/dynarec_arm64_avx_0f.c
+++ b/src/dynarec/arm64/dynarec_arm64_avx_0f.c
@@ -535,8 +535,8 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
             break;
 
         case 0x77:
-            INST_NAME("VZEROUPPER");
             if(!vex.l) {
+                INST_NAME("VZEROUPPER");
                 if(vex.v!=0) {
                     UDF(0);
                 } else {
@@ -545,7 +545,16 @@ uintptr_t dynarec64_AVX_0F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int
                     }
                 }
             } else {
-                DEFAULT;
+                INST_NAME("VZEROALL");
+                if(vex.v!=0) {
+                    UDF(0);
+                } else {
+                    for(int i=0; i<(rex.is32bits?8:16); ++i) {
+                        v0 = sse_get_reg_empty(dyn, ninst, x1, i);
+                        VEORQ(v0, v0, v0);
+                        YMM0(i);
+                    }
+                }
             }
             break;