[dynarmic] Allow to skip verification pass
Some checks failed
eden-license / license-header (pull_request) Failing after 40s
Some checks failed
eden-license / license-header (pull_request) Failing after 40s
Signed-off-by: lizzie <lizzie@eden-emu.dev>
This commit is contained in:
parent
85434536ee
commit
43cc7ce06e
2 changed files with 8 additions and 2 deletions
|
@ -34,6 +34,8 @@ enum class OptimizationFlag : std::uint32_t {
|
||||||
MiscIROpt = 0x00000020,
|
MiscIROpt = 0x00000020,
|
||||||
/// Optimize for code speed rather than for code size (this serves well for tight loops)
|
/// Optimize for code speed rather than for code size (this serves well for tight loops)
|
||||||
CodeSpeed = 0x00000040,
|
CodeSpeed = 0x00000040,
|
||||||
|
/// Disable verification passes
|
||||||
|
DisableVerification = 0x00000080,
|
||||||
|
|
||||||
/// This is an UNSAFE optimization that reduces accuracy of fused multiply-add operations.
|
/// This is an UNSAFE optimization that reduces accuracy of fused multiply-add operations.
|
||||||
/// This unfuses fused instructions to improve performance on host CPUs without FMA support.
|
/// This unfuses fused instructions to improve performance on host CPUs without FMA support.
|
||||||
|
|
|
@ -1491,7 +1491,9 @@ void Optimize(IR::Block& block, const A32::UserConfig& conf, const Optimization:
|
||||||
Optimization::DeadCodeElimination(block);
|
Optimization::DeadCodeElimination(block);
|
||||||
}
|
}
|
||||||
Optimization::IdentityRemovalPass(block);
|
Optimization::IdentityRemovalPass(block);
|
||||||
Optimization::VerificationPass(block);
|
if (!conf.HasOptimization(OptimizationFlag::DisableVerification)) {
|
||||||
|
Optimization::VerificationPass(block);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Optimize(IR::Block& block, const A64::UserConfig& conf, const Optimization::PolyfillOptions& polyfill_options) {
|
void Optimize(IR::Block& block, const A64::UserConfig& conf, const Optimization::PolyfillOptions& polyfill_options) {
|
||||||
|
@ -1509,7 +1511,9 @@ void Optimize(IR::Block& block, const A64::UserConfig& conf, const Optimization:
|
||||||
if (conf.HasOptimization(OptimizationFlag::MiscIROpt)) [[likely]] {
|
if (conf.HasOptimization(OptimizationFlag::MiscIROpt)) [[likely]] {
|
||||||
Optimization::A64MergeInterpretBlocksPass(block, conf.callbacks);
|
Optimization::A64MergeInterpretBlocksPass(block, conf.callbacks);
|
||||||
}
|
}
|
||||||
Optimization::VerificationPass(block);
|
if (!conf.HasOptimization(OptimizationFlag::DisableVerification)) {
|
||||||
|
Optimization::VerificationPass(block);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Dynarmic::Optimization
|
} // namespace Dynarmic::Optimization
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue