diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-08-10 09:58:42 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-08-10 09:58:42 +0200 |
| commit | 67af8c2badb80e10f3efd4d07b7e1d75d987e72e (patch) | |
| tree | 3ce24062d1faa200b5e7d27d4d0d1b21504a04ed /src/dynarec | |
| parent | 92531929f379543a0705ff250811c778e759ebf1 (diff) | |
| download | box64-67af8c2badb80e10f3efd4d07b7e1d75d987e72e.tar.gz box64-67af8c2badb80e10f3efd4d07b7e1d75d987e72e.zip | |
Added 67.AVX.0F.66 D6 opcode ([ARM64_DYNAREC] too)
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_67_avx.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67_avx.c b/src/dynarec/arm64/dynarec_arm64_67_avx.c index 1e1e5926..4c3f147f 100644 --- a/src/dynarec/arm64/dynarec_arm64_67_avx.c +++ b/src/dynarec/arm64/dynarec_arm64_67_avx.c @@ -103,6 +103,27 @@ uintptr_t dynarec64_67_AVX(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int } } + else if((vex.m==VEX_M_0F) && (vex.p==VEX_P_66)) { + switch(opcode) { + case 0xD6: + INST_NAME("VMOVQ Ex, Gx"); + nextop = F8; + GETG; + v0 = sse_get_reg(dyn, ninst, x1, gd, 0); + if(MODREG) { + v1 = sse_get_reg_empty(dyn, ninst, x1, (nextop&7)+(rex.b<<3)); + VMOV(v1, v0); + YMM0((nextop&7)+(rex.b<<3)); + } else { + addr = geted32(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0xfff<<3, 7, rex, NULL, 0, 0); + VSTR64_U12(v0, ed, fixedaddress); + } + break; + + default: + DEFAULT; + } + } else {DEFAULT;} if((*ok==-1) && (box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing)) { |