diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-04-01 13:47:46 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-04-01 13:47:46 +0200 |
| commit | d45558782feab081ada8eb4d7ee51e1954595233 (patch) | |
| tree | a90e9605287a9f3e43da93d9a24fdb7c14b26f14 | |
| parent | 1c3f4c078f982d0531ee0e4201baf0e1aea8d96a (diff) | |
| download | box64-d45558782feab081ada8eb4d7ee51e1954595233.tar.gz box64-d45558782feab081ada8eb4d7ee51e1954595233.zip | |
[DYNAREC] Added 66 0F C6 opcode
| -rwxr-xr-x | src/dynarec/dynarec_arm64_660f.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_660f.c b/src/dynarec/dynarec_arm64_660f.c index 006848d6..1e55437d 100755 --- a/src/dynarec/dynarec_arm64_660f.c +++ b/src/dynarec/dynarec_arm64_660f.c @@ -997,6 +997,26 @@ uintptr_t dynarec64_660F(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n LDRH_U12(gd, wback, u8*2); } break; + case 0xC6: + INST_NAME("SHUFPD Gx, Ex, Ib"); + nextop = F8; + GETGX(v0); + GETEX(v1, 1); + u8 = F8; + if(v0==v1 && u8==0) { + VMOVeD(v0, 1, v0, 0); + } else { + if(v0==v1) + q0 = fpu_get_scratch(dyn); + else + q0 = v0; + VMOVeD(q0, 0, v0, (u8&1)); + VMOVeD(q0, 1, v1, ((u8>>1)&1)); + if(v0==v1) { + VMOVQ(v0, q0); + } + } + break; case 0xD4: |