Moving cpu/frontend/ppc/ to cpu/frontend/.

This commit is contained in:
Ben Vanik 2015-03-24 08:37:00 -07:00
parent 9281d62106
commit 3279776a80
404 changed files with 255 additions and 385 deletions

View File

@ -1,28 +0,0 @@
/**
******************************************************************************
* 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 "xenia/cpu/frontend/frontend.h"
#include "xenia/cpu/runtime.h"
namespace xe {
namespace cpu {
namespace frontend {
Frontend::Frontend(Runtime* runtime) : runtime_(runtime) {}
Frontend::~Frontend() = default;
Memory* Frontend::memory() const { return runtime_->memory(); }
int Frontend::Initialize() { return 0; }
} // namespace frontend
} // namespace cpu
} // namespace xe

View File

@ -1,55 +0,0 @@
/**
******************************************************************************
* 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 XENIA_FRONTEND_FRONTEND_H_
#define XENIA_FRONTEND_FRONTEND_H_
#include <memory>
#include "xenia/cpu/frontend/context_info.h"
#include "xenia/memory.h"
#include "xenia/cpu/function.h"
#include "xenia/cpu/symbol_info.h"
namespace xe {
namespace cpu {
class Runtime;
} // namespace cpu
} // namespace xe
namespace xe {
namespace cpu {
namespace frontend {
class Frontend {
public:
Frontend(Runtime* runtime);
virtual ~Frontend();
Runtime* runtime() const { return runtime_; }
Memory* memory() const;
ContextInfo* context_info() const { return context_info_.get(); }
virtual int Initialize();
virtual int DeclareFunction(FunctionInfo* symbol_info) = 0;
virtual int DefineFunction(FunctionInfo* symbol_info,
uint32_t debug_info_flags, uint32_t trace_flags,
Function** out_function) = 0;
protected:
Runtime* runtime_;
std::unique_ptr<ContextInfo> context_info_;
};
} // namespace frontend
} // namespace cpu
} // namespace xe
#endif // XENIA_FRONTEND_FRONTEND_H_

View File

@ -1,30 +0,0 @@
# Copyright 2013 Ben Vanik. All Rights Reserved.
{
'sources': [
'ppc_context.cc',
'ppc_context.h',
'ppc_disasm.cc',
'ppc_disasm.h',
'ppc_emit-private.h',
'ppc_emit.h',
'ppc_emit_altivec.cc',
'ppc_emit_alu.cc',
'ppc_emit_control.cc',
'ppc_emit_fpu.cc',
'ppc_emit_memory.cc',
'ppc_frontend.cc',
'ppc_frontend.h',
'ppc_hir_builder.cc',
'ppc_hir_builder.h',
'ppc_instr.cc',
'ppc_instr.h',
'ppc_instr_tables.h',
'ppc_scanner.cc',
'ppc_scanner.h',
'ppc_translator.cc',
'ppc_translator.h',
],
'includes': [
],
}

View File

@ -7,14 +7,13 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include <cstdlib> #include <cstdlib>
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
uint64_t ParseInt64(const char* value) { uint64_t ParseInt64(const char* value) {
return std::strtoull(value, nullptr, 0); return std::strtoull(value, nullptr, 0);
@ -82,7 +81,6 @@ bool PPCContext::CompareRegWithString(const char* name, const char* value,
} }
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,8 +7,8 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_CONTEXT_H_ #ifndef XENIA_FRONTEND_PPC_CONTEXT_H_
#define XENIA_FRONTEND_PPC_PPC_CONTEXT_H_ #define XENIA_FRONTEND_PPC_CONTEXT_H_
#include "poly/poly.h" #include "poly/poly.h"
#include "poly/vec128.h" #include "poly/vec128.h"
@ -23,7 +23,6 @@ class ThreadState;
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
using vec128_t = poly::vec128_t; using vec128_t = poly::vec128_t;
@ -217,9 +216,8 @@ typedef struct alignas(64) PPCContext_s {
} PPCContext; } PPCContext;
#pragma pack(pop) #pragma pack(pop)
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_CONTEXT_H_ #endif // XENIA_FRONTEND_PPC_CONTEXT_H_

View File

@ -7,7 +7,7 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_disasm.h" #include "xenia/cpu/frontend/ppc_disasm.h"
#include "poly/poly.h" #include "poly/poly.h"
#include "poly/string_buffer.h" #include "poly/string_buffer.h"
@ -15,7 +15,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
void Disasm_0(InstrData& i, poly::StringBuffer* str) { void Disasm_0(InstrData& i, poly::StringBuffer* str) {
str->Append("%-8s ???", i.type->name); str->Append("%-8s ???", i.type->name);
@ -499,7 +498,6 @@ int DisasmPPC(InstrData& i, poly::StringBuffer* str) {
return 0; return 0;
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,22 +7,20 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_DISASM_H_ #ifndef XENIA_FRONTEND_PPC_DISASM_H_
#define XENIA_FRONTEND_PPC_PPC_DISASM_H_ #define XENIA_FRONTEND_PPC_DISASM_H_
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include "poly/string_buffer.h" #include "poly/string_buffer.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
int DisasmPPC(InstrData& i, poly::StringBuffer* str); int DisasmPPC(InstrData& i, poly::StringBuffer* str);
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_DISASM_H_ #endif // XENIA_FRONTEND_PPC_DISASM_H_

View File

@ -7,16 +7,15 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_EMIT_PRIVATE_H_ #ifndef XENIA_FRONTEND_PPC_EMIT_PRIVATE_H_
#define XENIA_FRONTEND_PPC_PPC_EMIT_PRIVATE_H_ #define XENIA_FRONTEND_PPC_EMIT_PRIVATE_H_
#include "xenia/cpu/frontend/ppc/ppc_emit.h" #include "xenia/cpu/frontend/ppc_emit.h"
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
#define XEEMITTER(name, opcode, format) int InstrEmit_##name #define XEEMITTER(name, opcode, format) int InstrEmit_##name
@ -27,9 +26,8 @@ namespace ppc {
#define XEINSTRNOTIMPLEMENTED() assert_always("Instruction not implemented"); #define XEINSTRNOTIMPLEMENTED() assert_always("Instruction not implemented");
//#define XEINSTRNOTIMPLEMENTED() __debugbreak() //#define XEINSTRNOTIMPLEMENTED() __debugbreak()
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_EMIT_PRIVATE_H_ #endif // XENIA_FRONTEND_PPC_EMIT_PRIVATE_H_

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_EMIT_H_ #ifndef XENIA_FRONTEND_PPC_EMIT_H_
#define XENIA_FRONTEND_PPC_PPC_EMIT_H_ #define XENIA_FRONTEND_PPC_EMIT_H_
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
void RegisterEmitCategoryAltivec(); void RegisterEmitCategoryAltivec();
void RegisterEmitCategoryALU(); void RegisterEmitCategoryALU();
@ -23,9 +22,8 @@ void RegisterEmitCategoryControl();
void RegisterEmitCategoryFPU(); void RegisterEmitCategoryFPU();
void RegisterEmitCategoryMemory(); void RegisterEmitCategoryMemory();
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_EMIT_H_ #endif // XENIA_FRONTEND_PPC_EMIT_H_

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_emit-private.h" #include "xenia/cpu/frontend/ppc_emit-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -2408,7 +2407,6 @@ void RegisterEmitCategoryAltivec() {
XEREGISTERINSTR(vxor128, VX128(5, 784)); XEREGISTERINSTR(vxor128, VX128(5, 784));
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_emit-private.h" #include "xenia/cpu/frontend/ppc_emit-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -1270,7 +1269,6 @@ void RegisterEmitCategoryALU() {
XEREGISTERINSTR(srawix, 0x7C000670); XEREGISTERINSTR(srawix, 0x7C000670);
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_emit-private.h" #include "xenia/cpu/frontend/ppc_emit-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -748,7 +747,6 @@ void RegisterEmitCategoryControl() {
XEREGISTERINSTR(mtmsrd, 0x7C000164); XEREGISTERINSTR(mtmsrd, 0x7C000164);
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_emit-private.h" #include "xenia/cpu/frontend/ppc_emit-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -553,7 +552,6 @@ void RegisterEmitCategoryFPU() {
XEREGISTERINSTR(fnegx, 0xFC000050); XEREGISTERINSTR(fnegx, 0xFC000050);
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,15 +7,14 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_emit-private.h" #include "xenia/cpu/frontend/ppc_emit-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -1082,7 +1081,6 @@ void RegisterEmitCategoryMemory() {
XEREGISTERINSTR(icbi, 0x7C0007AC); XEREGISTERINSTR(icbi, 0x7C0007AC);
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,18 +7,17 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_frontend.h" #include "xenia/cpu/frontend/ppc_frontend.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_disasm.h" #include "xenia/cpu/frontend/ppc_disasm.h"
#include "xenia/cpu/frontend/ppc/ppc_emit.h" #include "xenia/cpu/frontend/ppc_emit.h"
#include "xenia/cpu/frontend/ppc/ppc_translator.h" #include "xenia/cpu/frontend/ppc_translator.h"
#include "xenia/cpu/runtime.h" #include "xenia/cpu/runtime.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
using xe::cpu::Runtime; using xe::cpu::Runtime;
@ -43,7 +42,7 @@ void InitializeIfNeeded() {
void CleanupOnShutdown() {} void CleanupOnShutdown() {}
PPCFrontend::PPCFrontend(Runtime* runtime) : Frontend(runtime) { PPCFrontend::PPCFrontend(Runtime* runtime) : runtime_(runtime) {
InitializeIfNeeded(); InitializeIfNeeded();
std::unique_ptr<ContextInfo> context_info( std::unique_ptr<ContextInfo> context_info(
@ -58,6 +57,8 @@ PPCFrontend::~PPCFrontend() {
translator_pool_.Reset(); translator_pool_.Reset();
} }
Memory* PPCFrontend::memory() const { return runtime_->memory(); }
void CheckGlobalLock(PPCContext* ppc_state, void* arg0, void* arg1) { void CheckGlobalLock(PPCContext* ppc_state, void* arg0, void* arg1) {
ppc_state->scratch = 0x8000; ppc_state->scratch = 0x8000;
} }
@ -75,11 +76,6 @@ void HandleGlobalLock(PPCContext* ppc_state, void* arg0, void* arg1) {
} }
int PPCFrontend::Initialize() { int PPCFrontend::Initialize() {
int result = Frontend::Initialize();
if (result) {
return result;
}
void* arg0 = reinterpret_cast<void*>(&builtins_.global_lock); void* arg0 = reinterpret_cast<void*>(&builtins_.global_lock);
void* arg1 = reinterpret_cast<void*>(&builtins_.global_lock_taken); void* arg1 = reinterpret_cast<void*>(&builtins_.global_lock_taken);
builtins_.check_global_lock = runtime_->DefineBuiltin( builtins_.check_global_lock = runtime_->DefineBuiltin(
@ -89,7 +85,7 @@ int PPCFrontend::Initialize() {
"HandleGlobalLock", (FunctionInfo::ExternHandler)HandleGlobalLock, arg0, "HandleGlobalLock", (FunctionInfo::ExternHandler)HandleGlobalLock, arg0,
arg1); arg1);
return result; return 0;
} }
int PPCFrontend::DeclareFunction(FunctionInfo* symbol_info) { int PPCFrontend::DeclareFunction(FunctionInfo* symbol_info) {
@ -111,7 +107,6 @@ int PPCFrontend::DefineFunction(FunctionInfo* symbol_info,
return result; return result;
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,18 +7,27 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_FRONTEND_H_ #ifndef XENIA_FRONTEND_PPC_FRONTEND_H_
#define XENIA_FRONTEND_PPC_PPC_FRONTEND_H_ #define XENIA_FRONTEND_PPC_FRONTEND_H_
#include <memory>
#include <mutex> #include <mutex>
#include "xenia/cpu/frontend/frontend.h"
#include "poly/type_pool.h" #include "poly/type_pool.h"
#include "xenia/cpu/frontend/context_info.h"
#include "xenia/memory.h"
#include "xenia/cpu/function.h"
#include "xenia/cpu/symbol_info.h"
namespace xe {
namespace cpu {
class Runtime;
} // namespace cpu
} // namespace xe
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
class PPCTranslator; class PPCTranslator;
@ -29,27 +38,31 @@ struct PPCBuiltins {
FunctionInfo* handle_global_lock; FunctionInfo* handle_global_lock;
}; };
class PPCFrontend : public Frontend { class PPCFrontend {
public: public:
PPCFrontend(Runtime* runtime); explicit PPCFrontend(Runtime* runtime);
~PPCFrontend() override; ~PPCFrontend();
int Initialize() override; int Initialize();
Runtime* runtime() const { return runtime_; }
Memory* memory() const;
ContextInfo* context_info() const { return context_info_.get(); }
PPCBuiltins* builtins() { return &builtins_; } PPCBuiltins* builtins() { return &builtins_; }
int DeclareFunction(FunctionInfo* symbol_info) override; int DeclareFunction(FunctionInfo* symbol_info);
int DefineFunction(FunctionInfo* symbol_info, uint32_t debug_info_flags, int DefineFunction(FunctionInfo* symbol_info, uint32_t debug_info_flags,
uint32_t trace_flags, Function** out_function) override; uint32_t trace_flags, Function** out_function);
private: private:
poly::TypePool<PPCTranslator, PPCFrontend*> translator_pool_; Runtime* runtime_;
std::unique_ptr<ContextInfo> context_info_;
PPCBuiltins builtins_; PPCBuiltins builtins_;
poly::TypePool<PPCTranslator, PPCFrontend*> translator_pool_;
}; };
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_FRONTEND_H_ #endif // XENIA_FRONTEND_PPC_FRONTEND_H_

View File

@ -7,13 +7,13 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
#include "xenia/cpu/cpu-private.h" #include "xenia/cpu/cpu-private.h"
#include "xenia/cpu/frontend/ppc/ppc_context.h" #include "xenia/cpu/frontend/ppc_context.h"
#include "xenia/cpu/frontend/ppc/ppc_disasm.h" #include "xenia/cpu/frontend/ppc_disasm.h"
#include "xenia/cpu/frontend/ppc/ppc_frontend.h" #include "xenia/cpu/frontend/ppc_frontend.h"
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include "xenia/cpu/hir/label.h" #include "xenia/cpu/hir/label.h"
#include "xenia/cpu/runtime.h" #include "xenia/cpu/runtime.h"
#include "xenia/profiling.h" #include "xenia/profiling.h"
@ -21,7 +21,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu::hir; using namespace xe::cpu::hir;
@ -490,7 +489,6 @@ Value* PPCHIRBuilder::StoreRelease(Value* address, Value* value,
return eq; return eq;
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,8 +7,8 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_HIR_BUILDER_H_ #ifndef XENIA_FRONTEND_PPC_HIR_BUILDER_H_
#define XENIA_FRONTEND_PPC_PPC_HIR_BUILDER_H_ #define XENIA_FRONTEND_PPC_HIR_BUILDER_H_
#include "xenia/cpu/hir/hir_builder.h" #include "xenia/cpu/hir/hir_builder.h"
#include "xenia/cpu/function.h" #include "xenia/cpu/function.h"
@ -18,7 +18,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
class PPCFrontend; class PPCFrontend;
@ -112,9 +111,8 @@ class PPCHIRBuilder : public hir::HIRBuilder {
} trace_info_; } trace_info_;
}; };
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_HIR_BUILDER_H_ #endif // XENIA_FRONTEND_PPC_HIR_BUILDER_H_

View File

@ -7,19 +7,18 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include <sstream> #include <sstream>
#include <vector> #include <vector>
#include "xenia/cpu/frontend/ppc/ppc_instr_tables.h" #include "xenia/cpu/frontend/ppc_instr_tables.h"
#include "poly/poly.h" #include "poly/poly.h"
#include "poly/string_buffer.h" #include "poly/string_buffer.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
std::vector<InstrType*> all_instrs_; std::vector<InstrType*> all_instrs_;
@ -402,7 +401,6 @@ int RegisterInstrEmit(uint32_t code, InstrEmitFn emit) {
return 0; return 0;
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,8 +7,8 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_INSTR_H_ #ifndef XENIA_FRONTEND_PPC_INSTR_H_
#define XENIA_FRONTEND_PPC_PPC_INSTR_H_ #define XENIA_FRONTEND_PPC_INSTR_H_
#include <cstdint> #include <cstdint>
#include <string> #include <string>
@ -19,7 +19,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
inline uint32_t make_bitmask(uint32_t a, uint32_t b) { inline uint32_t make_bitmask(uint32_t a, uint32_t b) {
return (static_cast<uint32_t>(-1) >> (31 - b)) & ~((1u << a) - 1); return (static_cast<uint32_t>(-1) >> (31 - b)) & ~((1u << a) - 1);
@ -569,9 +568,8 @@ void DumpAllInstrCounts();
InstrType* GetInstrType(uint32_t code); InstrType* GetInstrType(uint32_t code);
int RegisterInstrEmit(uint32_t code, InstrEmitFn emit); int RegisterInstrEmit(uint32_t code, InstrEmitFn emit);
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_INSTR_H_ #endif // XENIA_FRONTEND_PPC_INSTR_H_

View File

@ -7,19 +7,18 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_INSTR_TABLES_H_ #ifndef XENIA_FRONTEND_PPC_INSTR_TABLES_H_
#define XENIA_FRONTEND_PPC_PPC_INSTR_TABLES_H_ #define XENIA_FRONTEND_PPC_INSTR_TABLES_H_
#include <cmath> #include <cmath>
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include "poly/poly.h" #include "poly/poly.h"
#include "poly/string_buffer.h" #include "poly/string_buffer.h"
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
void Disasm_0(InstrData& i, poly::StringBuffer* str); void Disasm_0(InstrData& i, poly::StringBuffer* str);
void Disasm__(InstrData& i, poly::StringBuffer* str); void Disasm__(InstrData& i, poly::StringBuffer* str);
@ -1094,9 +1093,8 @@ static InstrType instr_table_scan[] = {
#undef EMPTY #undef EMPTY
} // namespace tables } // namespace tables
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_INSTR_TABLES_H_ #endif // XENIA_FRONTEND_PPC_INSTR_TABLES_H_

View File

@ -7,13 +7,13 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_scanner.h" #include "xenia/cpu/frontend/ppc_scanner.h"
#include <algorithm> #include <algorithm>
#include <map> #include <map>
#include "xenia/cpu/frontend/ppc/ppc_frontend.h" #include "xenia/cpu/frontend/ppc_frontend.h"
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include "xenia/cpu/runtime.h" #include "xenia/cpu/runtime.h"
#include "poly/logging.h" #include "poly/logging.h"
#include "poly/memory.h" #include "poly/memory.h"
@ -28,7 +28,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
PPCScanner::PPCScanner(PPCFrontend* frontend) : frontend_(frontend) {} PPCScanner::PPCScanner(PPCFrontend* frontend) : frontend_(frontend) {}
@ -357,7 +356,6 @@ std::vector<BlockInfo> PPCScanner::FindBlocks(FunctionInfo* symbol_info) {
return blocks; return blocks;
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,8 +7,8 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_SCANNER_H_ #ifndef XENIA_FRONTEND_PPC_SCANNER_H_
#define XENIA_FRONTEND_PPC_PPC_SCANNER_H_ #define XENIA_FRONTEND_PPC_SCANNER_H_
#include <vector> #include <vector>
@ -17,7 +17,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
class PPCFrontend; class PPCFrontend;
@ -42,9 +41,8 @@ class PPCScanner {
PPCFrontend* frontend_; PPCFrontend* frontend_;
}; };
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_SCANNER_H_ #endif // XENIA_FRONTEND_PPC_SCANNER_H_

View File

@ -7,15 +7,15 @@
****************************************************************************** ******************************************************************************
*/ */
#include "xenia/cpu/frontend/ppc/ppc_translator.h" #include "xenia/cpu/frontend/ppc_translator.h"
#include "xenia/cpu/compiler/compiler_passes.h" #include "xenia/cpu/compiler/compiler_passes.h"
#include "xenia/cpu/cpu-private.h" #include "xenia/cpu/cpu-private.h"
#include "xenia/cpu/frontend/ppc/ppc_disasm.h" #include "xenia/cpu/frontend/ppc_disasm.h"
#include "xenia/cpu/frontend/ppc/ppc_frontend.h" #include "xenia/cpu/frontend/ppc_frontend.h"
#include "xenia/cpu/frontend/ppc/ppc_hir_builder.h" #include "xenia/cpu/frontend/ppc_hir_builder.h"
#include "xenia/cpu/frontend/ppc/ppc_instr.h" #include "xenia/cpu/frontend/ppc_instr.h"
#include "xenia/cpu/frontend/ppc/ppc_scanner.h" #include "xenia/cpu/frontend/ppc_scanner.h"
#include "xenia/cpu/runtime.h" #include "xenia/cpu/runtime.h"
#include "poly/reset_scope.h" #include "poly/reset_scope.h"
#include "xenia/profiling.h" #include "xenia/profiling.h"
@ -23,7 +23,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
// TODO(benvanik): remove when enums redefined. // TODO(benvanik): remove when enums redefined.
using namespace xe::cpu; using namespace xe::cpu;
@ -124,7 +123,7 @@ int PPCTranslator::Translate(FunctionInfo* symbol_info,
} }
if (false) { if (false) {
xe::cpu::frontend::ppc::DumpAllInstrCounts(); xe::cpu::frontend::DumpAllInstrCounts();
} }
// Emit function. // Emit function.
@ -208,7 +207,6 @@ void PPCTranslator::DumpSource(FunctionInfo* symbol_info,
} }
} }
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe

View File

@ -7,8 +7,8 @@
****************************************************************************** ******************************************************************************
*/ */
#ifndef XENIA_FRONTEND_PPC_PPC_TRANSLATOR_H_ #ifndef XENIA_FRONTEND_PPC_TRANSLATOR_H_
#define XENIA_FRONTEND_PPC_PPC_TRANSLATOR_H_ #define XENIA_FRONTEND_PPC_TRANSLATOR_H_
#include <memory> #include <memory>
@ -20,7 +20,6 @@
namespace xe { namespace xe {
namespace cpu { namespace cpu {
namespace frontend { namespace frontend {
namespace ppc {
class PPCFrontend; class PPCFrontend;
class PPCHIRBuilder; class PPCHIRBuilder;
@ -47,9 +46,8 @@ class PPCTranslator {
poly::StringBuffer string_buffer_; poly::StringBuffer string_buffer_;
}; };
} // namespace ppc
} // namespace frontend } // namespace frontend
} // namespace cpu } // namespace cpu
} // namespace xe } // namespace xe
#endif // XENIA_FRONTEND_PPC_PPC_TRANSLATOR_H_ #endif // XENIA_FRONTEND_PPC_TRANSLATOR_H_

View File

@ -3,11 +3,30 @@
'sources': [ 'sources': [
'context_info.cc', 'context_info.cc',
'context_info.h', 'context_info.h',
'frontend.cc', 'ppc_context.cc',
'frontend.h', 'ppc_context.h',
'ppc_disasm.cc',
'ppc_disasm.h',
'ppc_emit-private.h',
'ppc_emit.h',
'ppc_emit_altivec.cc',
'ppc_emit_alu.cc',
'ppc_emit_control.cc',
'ppc_emit_fpu.cc',
'ppc_emit_memory.cc',
'ppc_frontend.cc',
'ppc_frontend.h',
'ppc_hir_builder.cc',
'ppc_hir_builder.h',
'ppc_instr.cc',
'ppc_instr.h',
'ppc_instr_tables.h',
'ppc_scanner.cc',
'ppc_scanner.h',
'ppc_translator.cc',
'ppc_translator.h',
], ],
'includes': [ 'includes': [
'ppc/sources.gypi',
], ],
} }

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_add.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_add.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_addc.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_addc.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_adde.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_adde.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_addic.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_addic.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_addme.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_addme.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_addze.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_addze.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_cntlzd.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_cntlzd.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_cntlzw.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_cntlzw.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_divd.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_divd.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_divdu.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_divdu.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_divw.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_divw.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_divwu.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_divwu.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_eqv.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_eqv.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_fabs.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_fabs.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_fsel.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_fsel.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_lvexx.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_lvexx.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_lvl.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_lvl.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_lvr.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_lvr.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_lvsl.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_lvsl.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_lvsr.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_lvsr.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_mulhd.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_mulhd.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_mulhdu.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_mulhdu.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_mulhw.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_mulhw.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

View File

@ -1,5 +1,5 @@
/vagrant/src/xenia/cpu/frontend/ppc/test/bin//instr_mulhwu.o: file format elf64-powerpc /vagrant/src/xenia/cpu/frontend/test/bin//instr_mulhwu.o: file format elf64-powerpc
Disassembly of section .text: Disassembly of section .text:

Some files were not shown because too many files have changed in this diff Show More