diff --git a/src/alloy/backend/x64/optimizer/optimizer_passes.h b/src/alloy/backend/x64/optimizer/optimizer_passes.h index 6e1bb559c..88ad1042a 100644 --- a/src/alloy/backend/x64/optimizer/optimizer_passes.h +++ b/src/alloy/backend/x64/optimizer/optimizer_passes.h @@ -12,5 +12,6 @@ #include #include +#include #endif // ALLOY_BACKEND_X64_OPTIMIZER_PASSES_H_ diff --git a/src/alloy/backend/x64/optimizer/passes/reachability_pass.cc b/src/alloy/backend/x64/optimizer/passes/reachability_pass.cc index 77d542ecb..633600c27 100644 --- a/src/alloy/backend/x64/optimizer/passes/reachability_pass.cc +++ b/src/alloy/backend/x64/optimizer/passes/reachability_pass.cc @@ -28,6 +28,7 @@ int ReachabilityPass::Run(LIRBuilder* builder) { // TODO(benvanik): dead block removal. + // Remove unneeded jumps. auto block = builder->first_block(); while (block) { auto tail = block->instr_tail; diff --git a/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.cc b/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.cc new file mode 100644 index 000000000..298dca4b9 --- /dev/null +++ b/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.cc @@ -0,0 +1,27 @@ +/** + ****************************************************************************** + * Xenia : Xbox 360 Emulator Research Project * + ****************************************************************************** + * Copyright 2013 Ben Vanik. All rights reserved. * + * Released under the BSD license - see LICENSE in the root for more details. * + ****************************************************************************** + */ + +#include + +using namespace alloy; +using namespace alloy::backend::x64::lir; +using namespace alloy::backend::x64::optimizer; +using namespace alloy::backend::x64::optimizer::passes; + + +RegisterAllocationPass::RegisterAllocationPass() : + OptimizerPass() { +} + +RegisterAllocationPass::~RegisterAllocationPass() { +} + +int RegisterAllocationPass::Run(LIRBuilder* builder) { + return 0; +} diff --git a/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.h b/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.h new file mode 100644 index 000000000..eb88a6535 --- /dev/null +++ b/src/alloy/backend/x64/optimizer/passes/register_allocation_pass.h @@ -0,0 +1,39 @@ +/** + ****************************************************************************** + * Xenia : Xbox 360 Emulator Research Project * + ****************************************************************************** + * Copyright 2013 Ben Vanik. All rights reserved. * + * Released under the BSD license - see LICENSE in the root for more details. * + ****************************************************************************** + */ + +#ifndef ALLOY_BACKEND_X64_OPTIMIZER_PASSES_REGISTER_ALLOCATION_PASS_H_ +#define ALLOY_BACKEND_X64_OPTIMIZER_PASSES_REGISTER_ALLOCATION_PASS_H_ + +#include + + +namespace alloy { +namespace backend { +namespace x64 { +namespace optimizer { +namespace passes { + + +class RegisterAllocationPass : public OptimizerPass { +public: + RegisterAllocationPass(); + virtual ~RegisterAllocationPass(); + + virtual int Run(lir::LIRBuilder* builder); +}; + + +} // namespace passes +} // namespace optimizer +} // namespace x64 +} // namespace backend +} // namespace alloy + + +#endif // ALLOY_BACKEND_X64_OPTIMIZER_PASSES_REGISTER_ALLOCATION_PASS_H_ diff --git a/src/alloy/backend/x64/optimizer/passes/sources.gypi b/src/alloy/backend/x64/optimizer/passes/sources.gypi index 933cc3bff..6d80257ca 100644 --- a/src/alloy/backend/x64/optimizer/passes/sources.gypi +++ b/src/alloy/backend/x64/optimizer/passes/sources.gypi @@ -5,5 +5,7 @@ 'reachability_pass.h', 'redundant_mov_pass.cc', 'redundant_mov_pass.h', + 'register_allocation_pass.cc', + 'register_allocation_pass.h', ], } diff --git a/src/alloy/backend/x64/x64_assembler.cc b/src/alloy/backend/x64/x64_assembler.cc index ee123c1f2..29290e7e8 100644 --- a/src/alloy/backend/x64/x64_assembler.cc +++ b/src/alloy/backend/x64/x64_assembler.cc @@ -60,6 +60,7 @@ int X64Assembler::Initialize() { builder_ = new LIRBuilder(x64_backend_); optimizer_ = new Optimizer(backend_->runtime()); + optimizer_->AddPass(new passes::RegisterAllocationPass()); optimizer_->AddPass(new passes::RedundantMovPass()); optimizer_->AddPass(new passes::ReachabilityPass());