diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-20 22:51:52 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-20 22:51:52 +0100 |
| commit | 3d3345456412e246da1eead9c3cd2ed278a999c0 (patch) | |
| tree | 933e260b188d5cc1034b78c38a4eaacaec47c75f | |
| parent | a70109be83664413f4e873033ed98de35bbf190b (diff) | |
| download | box64-3d3345456412e246da1eead9c3cd2ed278a999c0.tar.gz box64-3d3345456412e246da1eead9c3cd2ed278a999c0.zip | |
[DYNAREC] Added 66 0F 40..4F CMOVcc opcodes
| -rwxr-xr-x | src/dynarec/dynarec_arm64_660f.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index 8f077871..50333692 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -68,6 +68,24 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n FAKEED; break; + #define GO(GETFLAGS, NO, YES, F) \ + READFLAGS(F); \ + GETFLAGS; \ + nextop=F8; \ + GETGD; \ + if(MODREG) { \ + ed = xRAX+(nextop&7)+(rex.b<<3); \ + } else { \ + addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, 0xfff<<(2+rex.w), (1<<(2+rex.w))-1, rex, 0, 0); \ + LDRH_U12(x1, ed, fixedaddress); \ + ed = x1; \ + } \ + Bcond(NO, +8); \ + BFIx(gd, ed, 0, 16); + + GOCOND(0x40, "CMOV", "Gw, Ew"); + #undef GO + case 0xA3: INST_NAME("BT Ew, Gw"); SETFLAGS(X_CF, SF_SET); |