diff options
author | MerryMage <MerryMage@users.noreply.github.com> | 2020-07-11 17:25:49 +0200 |
---|---|---|
committer | MerryMage <MerryMage@users.noreply.github.com> | 2020-07-11 17:38:38 +0200 |
commit | 505aa3a4c1eb2384ab5a46aecf6431db239b74e3 (patch) | |
tree | 8576d3b825f7cd85122b857f5b10c6f9eae1b87e /src/core/arm/dynarmic/arm_dynarmic_64.cpp | |
parent | configuration: Add settings to enable/disable specific CPU optimizations (diff) | |
download | yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar.gz yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar.bz2 yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar.lz yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar.xz yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.tar.zst yuzu-505aa3a4c1eb2384ab5a46aecf6431db239b74e3.zip |
Diffstat (limited to 'src/core/arm/dynarmic/arm_dynarmic_64.cpp')
-rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_64.cpp | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index e208a4aa7..a63a04a25 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -195,29 +195,31 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable& 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; + if (Settings::values.cpu_accuracy != Settings::CPUAccuracy::Accurate) { + 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); |