Adding skeleton for reg allocator.
This commit is contained in:
parent
93ea56179a
commit
a8eff63dbc
|
@ -12,5 +12,6 @@
|
|||
|
||||
#include <alloy/backend/x64/optimizer/passes/reachability_pass.h>
|
||||
#include <alloy/backend/x64/optimizer/passes/redundant_mov_pass.h>
|
||||
#include <alloy/backend/x64/optimizer/passes/register_allocation_pass.h>
|
||||
|
||||
#endif // ALLOY_BACKEND_X64_OPTIMIZER_PASSES_H_
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 <alloy/backend/x64/optimizer/passes/register_allocation_pass.h>
|
||||
|
||||
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;
|
||||
}
|
|
@ -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 <alloy/backend/x64/optimizer/optimizer_pass.h>
|
||||
|
||||
|
||||
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_
|
|
@ -5,5 +5,7 @@
|
|||
'reachability_pass.h',
|
||||
'redundant_mov_pass.cc',
|
||||
'redundant_mov_pass.h',
|
||||
'register_allocation_pass.cc',
|
||||
'register_allocation_pass.h',
|
||||
],
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
Loading…
Reference in New Issue