diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-05-27 12:21:57 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-05-27 12:21:57 +0200 |
| commit | 0d755e610b5a7cf782c261d14687146c90ae4ee3 (patch) | |
| tree | 13dbc799d99c364b66ceb9889c5cda6d178321c0 /src/tools | |
| parent | 55ee7fcc33808df63793c7bda384abcdc1c4bf4c (diff) | |
| download | box64-0d755e610b5a7cf782c261d14687146c90ae4ee3.tar.gz box64-0d755e610b5a7cf782c261d14687146c90ae4ee3.zip | |
More avx infrastructure
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/my_cpuid.c | 1 | ||||
| -rw-r--r-- | src/tools/rcfile.c | 15 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/tools/my_cpuid.c b/src/tools/my_cpuid.c index d36e67d1..68f902e9 100644 --- a/src/tools/my_cpuid.c +++ b/src/tools/my_cpuid.c @@ -323,6 +323,7 @@ void my_cpuid(x64emu_t* emu, uint32_t tmp32u) R_EAX = 0; R_EBX = //1<<3 | // BMI1 + box64_avx2<<5 | //AVX2 //1<<8 | //BMI2 1<<29| // SHA extension 0; diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c index 4f99daec..2b45dd06 100644 --- a/src/tools/rcfile.c +++ b/src/tools/rcfile.c @@ -100,7 +100,7 @@ ENTRYBOOL(BOX64_NOPULSE, box64_nopulse) \ ENTRYBOOL(BOX64_NOGTK, box64_nogtk) \ ENTRYBOOL(BOX64_NOVULKAN, box64_novulkan) \ ENTRYBOOL(BOX64_SSE42, box64_sse42) \ -ENTRYBOOL(BOX64_AVX, box64_avx) \ +ENTRYINT(BOX64_AVX, new_avx, 0, 2, 2) \ ENTRYBOOL(BOX64_FUTEX_WAITV, box64_futex_waitv) \ ENTRYSTRING_(BOX64_BASH, bash) \ ENTRYINT(BOX64_JITGDB, jit_gdb, 0, 3, 2) \ @@ -507,6 +507,7 @@ void ApplyParams(const char* name) return; int new_cycle_log = cycle_log; int new_maxcpu = box64_maxcpu; + int new_avx = box64_avx2?2:box64_avx; int box64_dynarec_jvm = box64_jvm; if(!strcmp(name, old_name)) { return; @@ -555,6 +556,18 @@ void ApplyParams(const char* name) cycle_log = new_cycle_log; initCycleLog(my_context); } + if(param->is_new_avx_present) { + if(!new_avx) { + printf_log(LOG_INFO, "Hidding AVX extension"); + box64_avx = 0; box64_avx2 = 0; + } else if(new_avx==1) { + printf_log(LOG_INFO, "Exposing AVX extension"); + box64_avx = 1; box64_avx2 = 0; + } else if(new_avx==2) { + printf_log(LOG_INFO, "Exposing AVX/AVX2 extensions"); + box64_avx = 1; box64_avx2 = 1; + } + } #ifdef DYNAREC if(param->is_box64_dynarec_jvm_present && !param->is_box64_jvm_present) box64_jvm = box64_dynarec_jvm; |