diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-30 12:12:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-30 12:12:45 +0200 |
| commit | 3e5784cbc560d21539b1ad1b157206102f25b25c (patch) | |
| tree | b0b943b3b09d9d48f4663e83bca8f54167ce0ead /src/dynarec/dynarec_native.c | |
| parent | 98d9f36f9cc98343217d09473db5587de1fe05b6 (diff) | |
| download | box64-3e5784cbc560d21539b1ad1b157206102f25b25c.tar.gz box64-3e5784cbc560d21539b1ad1b157206102f25b25c.zip | |
[ARM64_DYNAREC] Added a fisrt 128bits only AVX opcode
Diffstat (limited to 'src/dynarec/dynarec_native.c')
| -rw-r--r-- | src/dynarec/dynarec_native.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 7ac19234..4f509ac1 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -553,9 +553,15 @@ void* FillBlock64(dynablock_t* block, uintptr_t addr, int alternate, int is32bit k=i2; }*/ if(k!=-1) { - if(k!=-1 && !helper.insts[i].barrier_maybe) + if(!helper.insts[i].barrier_maybe) helper.insts[k].x64.barrier |= BARRIER_FULL; helper.insts[i].x64.jmp_insts = k; + if(helper.insts[i].ymm_zero || helper.insts[k].ymm_zero) { + // move to pureg the reg that are present in k (jump to) but not in i (jump from) + uint16_t to_purge = helper.insts[k].ymm_zero & ~helper.insts[i].ymm_zero; + helper.insts[k].purge_ymm0 |= to_purge; + helper.insts[k].ymm_zero &= ~to_purge; + } } } } |