about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2024-12-19 23:20:16 +0800
committerGitHub <noreply@github.com>2024-12-19 16:20:16 +0100
commitf8b9c7b2b7760ac9551927fac31bcbf2ba1673d1 (patch)
tree53f85c9778dbee9b297ca2610333887e6ae0df8e /src
parenta8000cb629eae569563b92e1ab7c5929bda3bb5f (diff)
downloadbox64-f8b9c7b2b7760ac9551927fac31bcbf2ba1673d1.tar.gz
box64-f8b9c7b2b7760ac9551927fac31bcbf2ba1673d1.zip
[LA64_DYNAREC] A few minor optimizations (#2174)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/la64/dynarec_la64_0f.c6
-rw-r--r--src/dynarec/la64/dynarec_la64_f0.c3
2 files changed, 3 insertions, 6 deletions
diff --git a/src/dynarec/la64/dynarec_la64_0f.c b/src/dynarec/la64/dynarec_la64_0f.c
index db4c73c1..a9909edd 100644
--- a/src/dynarec/la64/dynarec_la64_0f.c
+++ b/src/dynarec/la64/dynarec_la64_0f.c
@@ -1093,8 +1093,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             if (la64_lbt) {
                 X64_SET_EFLAGS(xZR, X_ZF);
             } else {
-                ADDI_D(x3, xZR, ~(1 << F_ZF));
-                AND(xFlags, xFlags, x3);
+                BSTRINS_D(xFlags, xZR, F_ZF, F_ZF);
             }
             break;
         case 0xBD:
@@ -1120,8 +1119,7 @@ uintptr_t dynarec64_0F(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             if (la64_lbt) {
                 X64_SET_EFLAGS(xZR, X_ZF);
             } else {
-                ADDI_D(x3, xZR, ~(1 << F_ZF));
-                AND(xFlags, xFlags, x3);
+                BSTRINS_D(xFlags, xZR, F_ZF, F_ZF);
             }
             if (rex.w)
                 CLZ_D(gd, ed);
diff --git a/src/dynarec/la64/dynarec_la64_f0.c b/src/dynarec/la64/dynarec_la64_f0.c
index 0178ca00..cd955b88 100644
--- a/src/dynarec/la64/dynarec_la64_f0.c
+++ b/src/dynarec/la64/dynarec_la64_f0.c
@@ -279,8 +279,7 @@ uintptr_t dynarec64_F0(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                                 if (la64_lbt) {
                                     X64_SET_EFLAGS(xZR, X_ZF);
                                 } else {
-                                    ADDI_D(x2, xZR, ~(1 << F_ZF));
-                                    AND(xFlags, xFlags, x2);
+                                    BSTRINS_D(xFlags, xZR, F_ZF, F_ZF);
                                 }
                             }
                             if (rex.w) {