mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-28 22:13:24 +00:00
LLVM CPU override option
This commit is contained in:
parent
b45cea1434
commit
07646c2124
@ -246,8 +246,9 @@ static void dummy()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
jit_compiler::jit_compiler(std::unordered_map<std::string, std::uintptr_t> init_linkage_info)
|
jit_compiler::jit_compiler(std::unordered_map<std::string, std::uintptr_t> init_linkage_info, std::string _cpu)
|
||||||
: m_link(std::move(init_linkage_info))
|
: m_link(std::move(init_linkage_info))
|
||||||
|
, m_cpu(std::move(_cpu))
|
||||||
{
|
{
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
m_link.emplace("__chkstk", (u64)&dummy);
|
m_link.emplace("__chkstk", (u64)&dummy);
|
||||||
@ -259,7 +260,11 @@ jit_compiler::jit_compiler(std::unordered_map<std::string, std::uintptr_t> init_
|
|||||||
llvm::InitializeNativeTarget();
|
llvm::InitializeNativeTarget();
|
||||||
llvm::InitializeNativeTargetAsmPrinter();
|
llvm::InitializeNativeTargetAsmPrinter();
|
||||||
LLVMLinkInMCJIT();
|
LLVMLinkInMCJIT();
|
||||||
|
|
||||||
|
if (m_cpu.empty())
|
||||||
|
{
|
||||||
m_cpu = llvm::sys::getHostCPUName();
|
m_cpu = llvm::sys::getHostCPUName();
|
||||||
|
}
|
||||||
|
|
||||||
if (m_cpu == "skylake")
|
if (m_cpu == "skylake")
|
||||||
{
|
{
|
||||||
|
@ -41,7 +41,7 @@ class jit_compiler final
|
|||||||
void init();
|
void init();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
jit_compiler(std::unordered_map<std::string, std::uintptr_t>);
|
jit_compiler(std::unordered_map<std::string, std::uintptr_t>, std::string _cpu);
|
||||||
~jit_compiler();
|
~jit_compiler();
|
||||||
|
|
||||||
// Compile module
|
// Compile module
|
||||||
|
@ -94,6 +94,8 @@ cfg::map_entry<ppu_decoder_type> g_cfg_ppu_decoder(cfg::root.core, "PPU Decoder"
|
|||||||
|
|
||||||
cfg::bool_entry g_cfg_llvm_logs(cfg::root.core, "Save LLVM logs");
|
cfg::bool_entry g_cfg_llvm_logs(cfg::root.core, "Save LLVM logs");
|
||||||
|
|
||||||
|
cfg::string_entry g_cfg_llvm_cpu(cfg::root.core, "Use LLVM CPU");
|
||||||
|
|
||||||
const ppu_decoder<ppu_interpreter_precise> s_ppu_interpreter_precise;
|
const ppu_decoder<ppu_interpreter_precise> s_ppu_interpreter_precise;
|
||||||
const ppu_decoder<ppu_interpreter_fast> s_ppu_interpreter_fast;
|
const ppu_decoder<ppu_interpreter_fast> s_ppu_interpreter_fast;
|
||||||
|
|
||||||
@ -928,7 +930,7 @@ extern void ppu_initialize(const ppu_module& info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto jit = fxm::make<jit_compiler>(std::move(link_table));
|
const auto jit = fxm::make<jit_compiler>(std::move(link_table), g_cfg_llvm_cpu.get());
|
||||||
|
|
||||||
LOG_SUCCESS(PPU, "LLVM: JIT initialized (%s)", jit->cpu());
|
LOG_SUCCESS(PPU, "LLVM: JIT initialized (%s)", jit->cpu());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user