diff options
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 |