about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-03-23 16:27:04 +0800
committerGitHub <noreply@github.com>2023-03-23 09:27:04 +0100
commit44524c057d1e3329ef9a4302b3cfaa371300b06c (patch)
treefa00dc0881a5371163b5dcdf39713af5944c994d /src
parenta42322be998494490918884a9bf564a8cff6a5fc (diff)
downloadbox64-44524c057d1e3329ef9a4302b3cfaa371300b06c.tar.gz
box64-44524c057d1e3329ef9a4302b3cfaa371300b06c.zip
[RV64_DYNAREC] Added more opcodes (#625)
* [RV64_DYNAREC] Added 0B OR opcode

* [RV64_DYNAREC] Added 35 XOR opcode
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/rv64/dynarec_rv64_00.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/dynarec/rv64/dynarec_rv64_00.c b/src/dynarec/rv64/dynarec_rv64_00.c
index af559d3b..c53679b2 100644
--- a/src/dynarec/rv64/dynarec_rv64_00.c
+++ b/src/dynarec/rv64/dynarec_rv64_00.c
@@ -98,7 +98,14 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             emit_or8(dyn, ninst, x1, x2, x3, x4);
             GBBACK(x5);
             break;
-
+        case 0x0B:
+            INST_NAME("OR Gd, Ed");
+            SETFLAGS(X_ALL, SF_SET_PENDING);
+            nextop = F8;
+            GETGD;
+            GETED(0);
+            emit_or32(dyn, ninst, rex, gd, ed, x3, x4);
+            break;
         case 0x0D:
             INST_NAME("OR EAX, Id");
             SETFLAGS(X_ALL, SF_SET_PENDING);
@@ -200,6 +207,12 @@ uintptr_t dynarec64_00(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             GETED(0);
             emit_xor32(dyn, ninst, rex, gd, ed, x3, x4);
             break;
+        case 0x35:
+            INST_NAME("XOR EAX, Id");
+            SETFLAGS(X_ALL, SF_SET_PENDING);
+            i64 = F32S;
+            emit_xor32c(dyn, ninst, rex, xRAX, i64, x3, x4);
+            break;
         case 0x38:
             INST_NAME("CMP Eb, Gb");
             SETFLAGS(X_ALL, SF_SET_PENDING);