diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-24 16:58:26 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-24 16:58:26 +0100 |
| commit | 0a02340e35370e6f08d32c85f09973412664ded4 (patch) | |
| tree | 4ee5e45819ff647b66682c23a917126f200c56a5 /src | |
| parent | 12ee624358632c25c6f891c5d4e7c9cf886d0798 (diff) | |
| download | box64-0a02340e35370e6f08d32c85f09973412664ded4.tar.gz box64-0a02340e35370e6f08d32c85f09973412664ded4.zip | |
[DYNAREC] Added 66 0F 12/13 opcodes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_660f.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index b1e64b39..47b2e5a8 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -68,6 +68,30 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n switch(opcode) { + case 0x12: + INST_NAME("MOVLPD Gx, Eq"); + nextop = F8; + GETGX(v0); + if(MODREG) { + // access register instead of memory is bad opcode! + DEFAULT; + return addr; + } + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, 0, 0); + VLD1_64(v0, 0, ed); + break; + case 0x13: + INST_NAME("MOVLPD Eq, Gx"); + nextop = F8; + GETGX(v0); + if(MODREG) { + // access register instead of memory is bad opcode! + DEFAULT; + return addr; + } + addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, 0, 0, rex, 0, 0); + VST1_64(v0, 0, ed); + break; case 0x14: INST_NAME("UNPCKLPD Gx, Ex"); nextop = F8; |