diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-01-08 14:43:06 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-01-08 14:43:14 +0100 |
| commit | 82105a1543bd8cdf2954067d2e491f034b43f6eb (patch) | |
| tree | 4387199460290fde3637de3bd7a07a29d65442d9 /src/dynarec/arm64/arm64_printer.c | |
| parent | c65910fd253edaa07b6397f39e085b19ce8fc53f (diff) | |
| download | box64-82105a1543bd8cdf2954067d2e491f034b43f6eb.tar.gz box64-82105a1543bd8cdf2954067d2e491f034b43f6eb.zip | |
[INTERPRETER] Improved x87 emulation a bit ([ARM64_DYNAREC] too)
Diffstat (limited to 'src/dynarec/arm64/arm64_printer.c')
| -rw-r--r-- | src/dynarec/arm64/arm64_printer.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/dynarec/arm64/arm64_printer.c b/src/dynarec/arm64/arm64_printer.c index 2d28a831..0b043886 100644 --- a/src/dynarec/arm64/arm64_printer.c +++ b/src/dynarec/arm64/arm64_printer.c @@ -743,8 +743,12 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr) snprintf(buff, sizeof(buff), "BFC %s, %d, %d", sf?Xt[Rd]:Wt[Rd], lsb, width); else snprintf(buff, sizeof(buff), "BFI %s, %s, %d, %d", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], lsb, width); - } else - snprintf(buff, sizeof(buff), "BFXIL %s, %s, %d, %d", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], immr, imms-immr+1); + } else { + if(Rn==31 && immr==0) + snprintf(buff, sizeof(buff), "BFC %s, %d, %d", sf?Xt[Rd]:Wt[Rd], immr, imms-immr+1); + else + snprintf(buff, sizeof(buff), "BFXIL %s, %s, %d, %d", sf?Xt[Rd]:Wt[Rd], sf?Xt[Rn]:Wt[Rn], immr, imms-immr+1); + } return buff; } // ---- BRANCH / TEST @@ -1643,6 +1647,11 @@ const char* arm64_print(uint32_t opcode, uintptr_t addr) snprintf(buff, sizeof(buff), "%cQXTN%s V%d.%s, V%d.%s", a.U?'U':'S', a.Q?"2":"", Rd, Vd, Rn, Va); return buff; } + if(isMask(opcode, "01U11110ff100001010010nnnnnddddd", &a)) { + const char Z[] = {'B', 'H', 'S', 'D', '?'}; + snprintf(buff, sizeof(buff), "SQXT%sN %c%d, %c%d", a.U?"U":"", Z[sf], Rn, Z[sf+1], Rm); + return buff; + } // (S/U)SSHL(2) / (U/S)XTL(2) if(isMask(opcode, "0QU011110hhhhiii101001nnnnnddddd", &a)) { |