summaryrefslogtreecommitdiffstats
path: root/src/core/arm/dynarmic/arm_dynarmic_32.cpp
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2020-07-11 17:25:49 +0200
committerMerryMage <MerryMage@users.noreply.github.com>2020-07-11 17:38:38 +0200
commit505aa3a4c1eb2384ab5a46aecf6431db239b74e3 (patch)
tree8576d3b825f7cd85122b857f5b10c6f9eae1b87e /src/core/arm/dynarmic/arm_dynarmic_32.cpp
parentconfiguration: Add settings to enable/disable specific CPU optimizations (diff)
downloadyuzu-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_32.cpp')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_32.cpp48
1 files changed, 25 insertions, 23 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
index 369a081cd..443ca72eb 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp
@@ -143,29 +143,31 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::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_unique<Dynarmic::A32::Jit>(config);