From 976edaf2d208fdbaa842cbe1425227208dda763f Mon Sep 17 00:00:00 2001 From: MerryMage Date: Mon, 20 Apr 2020 16:13:18 +0100 Subject: [PATCH] print_info: Add optimized IR output for A64 --- tests/print_info.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/print_info.cpp b/tests/print_info.cpp index 030281ae..45b8f3e3 100644 --- a/tests/print_info.cpp +++ b/tests/print_info.cpp @@ -27,6 +27,7 @@ #include "frontend/A64/translate/impl/impl.h" #include "frontend/A64/translate/translate.h" #include "frontend/ir/basic_block.h" +#include "ir_opt/passes.h" #include #include @@ -54,7 +55,7 @@ void PrintA32Instruction(u32 instruction) { const A32::LocationDescriptor location{0, {}, {}}; IR::Block block{location}; const bool should_continue = A32::TranslateSingleInstruction(block, location, instruction); - fmt::print("should_continue: {}\n", should_continue); + fmt::print("should_continue: {}\n\n", should_continue); fmt::print("IR:\n"); fmt::print("{}\n", IR::DumpBlock(block)); } @@ -66,9 +67,17 @@ void PrintA64Instruction(u32 instruction) { const A64::LocationDescriptor location{0, {}}; IR::Block block{location}; const bool should_continue = A64::TranslateSingleInstruction(block, location, instruction); - fmt::print("should_continue: {}\n", should_continue); + fmt::print("should_continue: {}\n\n", should_continue); fmt::print("IR:\n"); fmt::print("{}\n", IR::DumpBlock(block)); + + Optimization::A64GetSetElimination(block); + Optimization::ConstantPropagation(block); + Optimization::DeadCodeElimination(block); + Optimization::IdentityRemovalPass(block); + + fmt::print("Optimized IR:\n"); + fmt::print("{}\n", IR::DumpBlock(block)); } class ExecEnv final : public Dynarmic::A32::UserCallbacks {