Browse Source

[dynarmic] add back A64 identity pass (#3519)

results in way better codegen (less noise for movs and all dat)
i think it was removed by accident by me, oops

Signed-off-by: lizzie <lizzie@eden-emu.dev>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3519
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
descriptor_pool_opt
lizzie 3 days ago
committed by crueter
parent
commit
634686d59b
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 11
      src/dynarmic/src/dynarmic/ir/opt_passes.cpp

11
src/dynarmic/src/dynarmic/ir/opt_passes.cpp

@ -1472,11 +1472,11 @@ static void VerificationPass(const IR::Block& block) {
void Optimize(IR::Block& block, const A32::UserConfig& conf, const Optimization::PolyfillOptions& polyfill_options) {
Optimization::PolyfillPass(block, polyfill_options);
Optimization::NamingPass(block);
if (conf.HasOptimization(OptimizationFlag::GetSetElimination)) [[likely]] {
if (conf.HasOptimization(OptimizationFlag::GetSetElimination)) {
Optimization::A32GetSetElimination(block, {.convert_nzc_to_nz = true});
Optimization::DeadCodeElimination(block);
}
if (conf.HasOptimization(OptimizationFlag::ConstProp)) [[likely]] {
if (conf.HasOptimization(OptimizationFlag::ConstProp)) {
Optimization::ConstantMemoryReads(block, conf.callbacks);
Optimization::ConstantPropagation(block);
Optimization::DeadCodeElimination(block);
@ -1491,17 +1491,18 @@ void Optimize(IR::Block& block, const A64::UserConfig& conf, const Optimization:
Optimization::PolyfillPass(block, polyfill_options);
Optimization::A64CallbackConfigPass(block, conf);
Optimization::NamingPass(block);
if (conf.HasOptimization(OptimizationFlag::GetSetElimination) && !conf.check_halt_on_memory_access) [[likely]] {
if (conf.HasOptimization(OptimizationFlag::GetSetElimination) && !conf.check_halt_on_memory_access) {
Optimization::A64GetSetElimination(block);
Optimization::DeadCodeElimination(block);
}
if (conf.HasOptimization(OptimizationFlag::ConstProp)) [[likely]] {
if (conf.HasOptimization(OptimizationFlag::ConstProp)) {
Optimization::ConstantPropagation(block);
Optimization::DeadCodeElimination(block);
}
if (conf.HasOptimization(OptimizationFlag::MiscIROpt)) [[likely]] {
if (conf.HasOptimization(OptimizationFlag::MiscIROpt)) {
Optimization::A64MergeInterpretBlocksPass(block, conf.callbacks);
}
Optimization::IdentityRemovalPass(block);
if (!conf.HasOptimization(OptimizationFlag::DisableVerification)) {
Optimization::VerificationPass(block);
}

Loading…
Cancel
Save