about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2023-04-10 20:10:58 +0800
committerGitHub <noreply@github.com>2023-04-10 14:10:58 +0200
commit9b3511cc88ea3c03590ccd9158095086de53c9ed (patch)
tree5fd07d08586578d5c31c6e07cd01211471b45373 /src/emu
parent48f80ebc930e66968e36e75425dae44490040a97 (diff)
downloadbox64-9b3511cc88ea3c03590ccd9158095086de53c9ed.tar.gz
box64-9b3511cc88ea3c03590ccd9158095086de53c9ed.zip
[RV64_DYNAREC] Added more opcode for SV and some fixes (#683)
* [RV64_DYNAREC] Added 66 0F 67 PACKUSWB opcode

* [RV64_DYNAREC] Added 66 0F 6B PACKSSDW opcode

* [INTERP] Fixed typos

* [RV64_DYNAREC] Fixed 0F BA /7 BTC opcode

* [RV64_DYNAREC] Added 0F BB BTC opcode
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64run0f.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index 8cd5b312..5f46db5d 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -876,13 +876,13 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
             if(!MODREG)

             {

                 #ifdef TEST_INTERPRETER

-                test->memaddr=((test->memaddr)+(tmp32s<<(rex.w?3:2)));

+                test->memaddr=((test->memaddr)+(tmp64s<<(rex.w?3:2)));

                 if(rex.w)

                     *(uint64_t*)test->mem = *(uint64_t*)test->memaddr;

                 else

                     *(uint32_t*)test->mem = *(uint32_t*)test->memaddr;

                 #else

-                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp32s<<(rex.w?3:2)));

+                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp64s<<(rex.w?3:2)));

                 #endif

             }

             if(rex.w) {

@@ -1022,13 +1022,13 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
             if(!MODREG)

             {

                 #ifdef TEST_INTERPRETER

-                test->memaddr=((test->memaddr)+(tmp32s<<(rex.w?3:2)));

+                test->memaddr=((test->memaddr)+(tmp64s<<(rex.w?3:2)));

                 if(rex.w)

                     *(uint64_t*)test->mem = *(uint64_t*)test->memaddr;

                 else

                     *(uint32_t*)test->mem = *(uint32_t*)test->memaddr;

                 #else

-                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp32s<<(rex.w?3:2)));

+                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp64s<<(rex.w?3:2)));

                 #endif

             }

             if(rex.w) {

@@ -1160,13 +1160,13 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
             if(!MODREG)

             {

                 #ifdef TEST_INTERPRETER

-                test->memaddr=((test->memaddr)+(tmp32s<<(rex.w?3:2)));

+                test->memaddr=((test->memaddr)+(tmp64s<<(rex.w?3:2)));

                 if(rex.w)

                     *(uint64_t*)test->mem = *(uint64_t*)test->memaddr;

                 else

                     *(uint32_t*)test->mem = *(uint32_t*)test->memaddr;

                 #else

-                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp32s<<(rex.w?3:2)));

+                ED=(reg64_t*)(((uintptr_t)(ED))+(tmp64s<<(rex.w?3:2)));

                 #endif

             }

             if(rex.w) {

@@ -1729,4 +1729,4 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
             return 0;

     }

     return addr;

-}
\ No newline at end of file
+}