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_functions.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_functions.c')
| -rw-r--r-- | src/dynarec/dynarec_native_functions.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native_functions.c b/src/dynarec/dynarec_native_functions.c index 1cb2834d..10d6f333 100644 --- a/src/dynarec/dynarec_native_functions.c +++ b/src/dynarec/dynarec_native_functions.c @@ -507,7 +507,7 @@ uint8_t geted_ib(dynarec_native_t* dyn, uintptr_t addr, int ninst, uint8_t nexto } #undef F8 -int isNativeCall(dynarec_native_t* dyn, uintptr_t addr, uintptr_t* calladdress, int* retn) +int isNativeCall(dynarec_native_t* dyn, uintptr_t addr, uintptr_t* calladdress, uint16_t* retn) { (void)dyn; @@ -533,3 +533,31 @@ int isNativeCall(dynarec_native_t* dyn, uintptr_t addr, uintptr_t* calladdress, #undef PK32 #undef PK } + +// AVX +void avx_mark_zero(dynarec_native_t* dyn, int ninst, int reg) +{ + dyn->ymm_zero |= (1<<reg); +} + +int is_avx_zero(dynarec_native_t* dyn, int ninst, int reg) +{ + return (dyn->ymm_zero>>reg)&1; +} +int is_avx_zero_unset(dynarec_native_t* dyn, int ninst, int reg) +{ + if((dyn->ymm_zero>>reg)&1) { + dyn->ymm_zero &= ~(1<<reg); + return 1; + } + return 0; +} +void avx_mark_zero_reset(dynarec_native_t* dyn, int ninst) +{ + dyn->ymm_zero = 0; +} + +void avx_unmark_zero(dynarec_native_t* dyn, int ninst, int reg) +{ + dyn->ymm_zero &= ~(1<<reg); +} |