diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-07-24 12:05:51 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-07-24 12:05:51 +0200 |
| commit | 5b3f675c0d562783078eb496a2e6d782663548b8 (patch) | |
| tree | 182b8f2d8b79b46a33ceb3791a392da18af13bae | |
| parent | a908ce881d123b395bc2147a89f06fb79a68d605 (diff) | |
| download | box64-5b3f675c0d562783078eb496a2e6d782663548b8.tar.gz box64-5b3f675c0d562783078eb496a2e6d782663548b8.zip | |
[LA64_DYNAREC] Fixed some issue with ADD/SUB x64 eflags when using LBT extension
| -rw-r--r-- | src/dynarec/la64/dynarec_la64_emit_math.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/dynarec/la64/dynarec_la64_emit_math.c b/src/dynarec/la64/dynarec_la64_emit_math.c index 2e1548ed..471d9f77 100644 --- a/src/dynarec/la64/dynarec_la64_emit_math.c +++ b/src/dynarec/la64/dynarec_la64_emit_math.c @@ -40,9 +40,9 @@ void emit_add32(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int s2, int s if (cpuext.lbt) { IFX (X_ALL) { if (rex.w) - X64_ADD_DU(s1, s2); + X64_ADD_D(s1, s2); else - X64_ADD_WU(s1, s2); + X64_ADD_W(s1, s2); } ADDxw(s1, s1, s2); if (!rex.w) ZEROUP(s1); @@ -149,9 +149,9 @@ void emit_add32c(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int64_t c, i if (cpuext.lbt) { IFX (X_ALL) { if (rex.w) - X64_ADD_DU(s1, s2); + X64_ADD_D(s1, s2); else - X64_ADD_WU(s1, s2); + X64_ADD_W(s1, s2); } ADDxw(s1, s1, s2); if (!rex.w) ZEROUP(s1); @@ -575,9 +575,9 @@ void emit_sub32(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int s2, int s if (cpuext.lbt) { IFX (X_ALL) { if (rex.w) - X64_SUB_DU(s1, s2); + X64_SUB_D(s1, s2); else - X64_SUB_WU(s1, s2); + X64_SUB_W(s1, s2); } SUBxw(s1, s1, s2); if (!rex.w) ZEROUP(s1); @@ -646,9 +646,9 @@ void emit_sub32c(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int64_t c, i } IFX (X_ALL) { if (rex.w) { - X64_SUB_DU(s1, s2); + X64_SUB_D(s1, s2); } else { - X64_SUB_WU(s1, s2); + X64_SUB_W(s1, s2); } } SUBxw(s1, s1, s2); @@ -967,9 +967,9 @@ void emit_neg32(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int s2, int s IFXA (X_ALL, cpuext.lbt) { if (rex.w) - X64_SUB_DU(xZR, s1); + X64_SUB_D(xZR, s1); else - X64_SUB_WU(xZR, s1); + X64_SUB_W(xZR, s1); } NEGxw(s1, s1); |