diff options
author | MerryMage <MerryMage@users.noreply.github.com> | 2020-07-11 15:26:36 +0200 |
---|---|---|
committer | MerryMage <MerryMage@users.noreply.github.com> | 2020-07-11 15:34:09 +0200 |
commit | 0193202964449ba7a6ae46d614a63bf5caa589a7 (patch) | |
tree | f762a6569bf1a0e6240e76657fe387d006c3dc71 /src/core/arm/dynarmic/arm_dynarmic_64.cpp | |
parent | Merge pull request #4203 from VolcaEM/services (diff) | |
download | yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar.gz yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar.bz2 yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar.lz yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar.xz yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.tar.zst yuzu-0193202964449ba7a6ae46d614a63bf5caa589a7.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_64.cpp | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 790981034..e208a4aa7 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -191,15 +191,35 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable& // Unpredictable instructions config.define_unpredictable_behaviour = true; - // Optimizations - if (Settings::values.disable_cpu_opt) { - config.enable_optimizations = false; - config.enable_fast_dispatch = false; - } - // Timing config.wall_clock_cntpct = uses_wall_clock; + // Safe optimizations + if (!Settings::values.cpuopt_page_tables) { + config.page_table = nullptr; + } + if (!Settings::values.cpuopt_block_linking) { + config.optimizations &= ~Dynarmic::OptimizationFlag::BlockLinking; + } + if (!Settings::values.cpuopt_return_stack_buffer) { + config.optimizations &= ~Dynarmic::OptimizationFlag::ReturnStackBuffer; + } + if (!Settings::values.cpuopt_fast_dispatcher) { + config.optimizations &= ~Dynarmic::OptimizationFlag::FastDispatch; + } + if (!Settings::values.cpuopt_context_elimination) { + config.optimizations &= ~Dynarmic::OptimizationFlag::GetSetElimination; + } + if (!Settings::values.cpuopt_const_prop) { + config.optimizations &= ~Dynarmic::OptimizationFlag::ConstProp; + } + if (!Settings::values.cpuopt_misc_ir) { + config.optimizations &= ~Dynarmic::OptimizationFlag::MiscIROpt; + } + if (!Settings::values.cpuopt_reduce_misalign_checks) { + config.only_detect_misalignment_via_page_table_on_page_boundary = false; + } + return std::make_shared<Dynarmic::A64::Jit>(config); } |