about summary refs log tree commit diff stats
path: root/src/os/hostext_common.c
blob: 258e1af47d61294bcac8eebd08b8fa5000058ec0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
}