diff options
| author | Yang Liu <liuyang22@iscas.ac.cn> | 2025-06-16 20:05:38 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-16 14:05:38 +0200 |
| commit | ae0c91dce0671c176321fc72bfa69f1731d4aa2e (patch) | |
| tree | b9f65e3e7c2966c74f2bb4a89ae873484bd80ba4 /src/os/hostext_common.c | |
| parent | ab6deeb319cf4389f0cfd555c8aa922300065ee6 (diff) | |
| download | box64-ae0c91dce0671c176321fc72bfa69f1731d4aa2e.tar.gz box64-ae0c91dce0671c176321fc72bfa69f1731d4aa2e.zip | |
[WOW64] Refactored host extention detection and added preliminary support for WowBox64 (#2752)
Diffstat (limited to 'src/os/hostext_common.c')
| -rw-r--r-- | src/os/hostext_common.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/os/hostext_common.c b/src/os/hostext_common.c new file mode 100644 index 00000000..258e1af4 --- /dev/null +++ b/src/os/hostext_common.c @@ -0,0 +1,64 @@ +#include "debug.h" + +void PrintHostCpuFeatures(void) +{ +#ifdef ARM64 + printf_log(LOG_INFO, "Dynarec for ARM64, with extension: ASIMD"); + if(cpuext.aes) + printf_log_prefix(0, LOG_INFO, " AES"); + if(cpuext.crc32) + printf_log_prefix(0, LOG_INFO, " CRC32"); + if(cpuext.pmull) + printf_log_prefix(0, LOG_INFO, " PMULL"); + if(cpuext.atomics) + printf_log_prefix(0, LOG_INFO, " ATOMICS"); + if(cpuext.sha1) + printf_log_prefix(0, LOG_INFO, " SHA1"); + if(cpuext.sha2) + printf_log_prefix(0, LOG_INFO, " SHA2"); + if(cpuext.uscat) + printf_log_prefix(0, LOG_INFO, " USCAT"); + if(cpuext.flagm) + printf_log_prefix(0, LOG_INFO, " FLAGM"); + if(cpuext.flagm2) + printf_log_prefix(0, LOG_INFO, " FLAGM2"); + if(cpuext.frintts) + printf_log_prefix(0, LOG_INFO, " FRINT"); + if(cpuext.afp) + printf_log_prefix(0, LOG_INFO, " AFP"); + if(cpuext.rndr) + printf_log_prefix(0, LOG_INFO, " RNDR"); + printf_log_prefix(0, LOG_INFO, "\n"); +#elif defined(LA64) + printf_log(LOG_INFO, "Dynarec for LoongArch with extension LSX LASX"); + if (cpuext.lbt) + printf_log_prefix(0, LOG_INFO, " LBT_X86"); + if (cpuext.lam_bh) + printf_log_prefix(0, LOG_INFO, " LAM_BH"); + if (cpuext.lamcas) + printf_log_prefix(0, LOG_INFO, " LAMCAS"); + if (cpuext.scq) + printf_log_prefix(0, LOG_INFO, " SCQ"); + printf_log_prefix(0, LOG_INFO, "\n"); +#elif defined(RV64) + printf_log(LOG_INFO, "Dynarec for rv64g"); + if (cpuext.vector && !cpuext.xtheadvector) printf_log_prefix(0, LOG_INFO, "v"); + if (cpuext.zba) printf_log_prefix(0, LOG_INFO, "_zba"); + if (cpuext.zbb) printf_log_prefix(0, LOG_INFO, "_zbb"); + if (cpuext.zbc) printf_log_prefix(0, LOG_INFO, "_zbc"); + if (cpuext.zbs) printf_log_prefix(0, LOG_INFO, "_zbs"); + if (cpuext.vector && !cpuext.xtheadvector) printf_log_prefix(0, LOG_INFO, "_zvl%d", cpuext.vlen * 8); + if (cpuext.xtheadba) printf_log_prefix(0, LOG_INFO, "_xtheadba"); + if (cpuext.xtheadbb) printf_log_prefix(0, LOG_INFO, "_xtheadbb"); + if (cpuext.xtheadbs) printf_log_prefix(0, LOG_INFO, "_xtheadbs"); + if (cpuext.xtheadmempair) printf_log_prefix(0, LOG_INFO, "_xtheadmempair"); + if (cpuext.xtheadcondmov) printf_log_prefix(0, LOG_INFO, "_xtheadcondmov"); + if (cpuext.xtheadmemidx) printf_log_prefix(0, LOG_INFO, "_xtheadmemidx"); + // Disable the display since these are only detected but never used. + // if(cpuext.xtheadfmemidx) printf_log_prefix(0, LOG_INFO, " xtheadfmemidx"); + // if(cpuext.xtheadmac) printf_log_prefix(0, LOG_INFO, " xtheadmac"); + // if(cpuext.xtheadfmv) printf_log_prefix(0, LOG_INFO, " xtheadfmv"); + if (cpuext.xtheadvector) printf_log_prefix(0, LOG_INFO, "_xthvector"); + printf_log_prefix(0, LOG_INFO, "\n"); +#endif +} \ No newline at end of file |