about summary refs log tree commit diff stats
path: root/src/dynarec/arm64_printer.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-23 10:00:29 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-23 10:00:29 +0100
commit2b6fa580df14e02e9bfdf9a3b23e56b7515d5c2a (patch)
tree161592b3cfb7c03706172eda1551a79af8bf70c5 /src/dynarec/arm64_printer.c
parent7f750e7ac1bf23bd91073691cae31e1191312d82 (diff)
downloadbox64-2b6fa580df14e02e9bfdf9a3b23e56b7515d5c2a.tar.gz
box64-2b6fa580df14e02e9bfdf9a3b23e56b7515d5c2a.zip
[DYNAREC] Added F3 0F C2 opcode
Diffstat (limited to 'src/dynarec/arm64_printer.c')
-rwxr-xr-xsrc/dynarec/arm64_printer.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/dynarec/arm64_printer.c b/src/dynarec/arm64_printer.c
index 14255e48..8d9aedfe 100755
--- a/src/dynarec/arm64_printer.c
+++ b/src/dynarec/arm64_printer.c
@@ -699,6 +699,16 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
         return buff;

     }

 

+    if(isMask(opcode, "f1011010100mmmmmdddd00nnnnnddddd", &a)) {

+        if(Rm!=31 && (cond&0b1110)!=0b1110 && Rn!=31 && Rn==Rm)

+            snprintf(buff, sizeof(buff), "CINV %s, %s, %s, %s", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm], conds[cond^1]);    

+        else if(Rm==31 && (cond&0b1110)!=0b1110 && Rn==31)

+            snprintf(buff, sizeof(buff), "CSETM %s,%s", sf?Xt[Rd]:Wt[Rd], conds[cond^1]);    

+        else

+            snprintf(buff, sizeof(buff), "CSINV %s, %s, %s, %s", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], sf?Xt[Rm]:Wt[Rm], conds[cond]);

+        return buff;

+    }

+

     if(isMask(opcode, "f1011010100mmmmmcccc01nnnnnddddd", &a)) {

         if((cond&0b1110)!=0b1110 && Rn==Rm)

             snprintf(buff, sizeof(buff), "CNEG %s, %s, %s", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], conds[cond^1]);