about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorwannacu <wannacu2049@gmail.com>2023-08-04 16:25:56 +0800
committerwannacu <wannacu2049@gmail.com>2023-08-04 16:28:39 +0800
commit1e7b4b8450e90517f842bdf0965c0089068642dd (patch)
tree1164ce2921cc6fcb271cd3b6bbfc01111cf1e952 /src
parent0edf24ae977d812386bf6bc0b5d41b7ab3900a05 (diff)
downloadbox64-1e7b4b8450e90517f842bdf0965c0089068642dd.tar.gz
box64-1e7b4b8450e90517f842bdf0965c0089068642dd.zip
[ARM64] Added printer for FPRINTX
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/arm64_printer.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/dynarec/arm64/arm64_printer.c b/src/dynarec/arm64/arm64_printer.c
index ead54a61..2c134dee 100644
--- a/src/dynarec/arm64/arm64_printer.c
+++ b/src/dynarec/arm64/arm64_printer.c
@@ -1107,7 +1107,19 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr)
         snprintf(buff, sizeof(buff), "FSQRT %c%d, %c%d", s, Rd, s, Rn);

         return buff;

     }

-

+    // FPRINTX

+    if(isMask(opcode, "0Q1011100f100001100110nnnnnddddd", &a)) {

+        char s = a.Q?'V':'D';

+        char d = sf?'D':'S';

+        int n = (a.Q && !sf)?4:2;

+        snprintf(buff, sizeof(buff), "VFRINTX %c%d.%d%c, %c%d.%d%c", s, Rd, n, d, s, Rn, n, d);

+        return buff;

+    }

+    if (isMask(opcode, "00011110ff100111010000nnnnnddddd", &a)) {

+        char s = (sf==0)?'S':((sf==1)?'D':'?');

+        snprintf(buff, sizeof(buff), "FRINTX %c%d, %c%d", s, Rd, s, Rn);

+        return buff;

+    }

     // FRINTI

     if(isMask(opcode, "0Q1011101f100001100110nnnnnddddd", &a)) {

         char s = a.Q?'V':'D';