mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-03 21:41:26 +12:00
SPU analyser: basic function detection in Giga mode
Misc: fix EH frame registration (LLVM, non-Windows). Misc: constant-folding bitcast (cpu_translator). Misc: add syntax for LLVM arrays (cpu_translator). Misc: use function names for proper linkage (SPU LLVM). Changed function search and verification in Giga mode. Basic stack frame layout analysis. Function detection in Giga mode. Basic use of new information in SPU LLVM. Fixed jump table compilation in SPU LLVM. Disable broken optimization in Accurate xfloat mode. Make compiled SPU modules position-independent in SPU LLVM. Optimizations include but not limited to: * Compiling SPU functions as native functions when eligible * Avoiding register context write-out * Aligned stack assumption (CWD alike instruction)
This commit is contained in:
parent
fce9d6a7b8
commit
7492f335e9
15 changed files with 1588 additions and 492 deletions
|
@ -474,7 +474,7 @@ struct MemoryManager : llvm::RTDyldMemoryManager
|
|||
s_unfire.push_front(std::make_pair(addr, size));
|
||||
#endif
|
||||
|
||||
return RTDyldMemoryManager::registerEHFrames(addr, load_addr, size);
|
||||
return RTDyldMemoryManager::registerEHFramesInProcess(addr, size);
|
||||
}
|
||||
|
||||
void deregisterEHFrames() override
|
||||
|
@ -508,6 +508,10 @@ struct MemoryManager2 : llvm::RTDyldMemoryManager
|
|||
|
||||
void registerEHFrames(u8* addr, u64 load_addr, std::size_t size) override
|
||||
{
|
||||
#ifndef _WIN32
|
||||
RTDyldMemoryManager::registerEHFramesInProcess(addr, size);
|
||||
s_unfire.push_front(std::make_pair(addr, size));
|
||||
#endif
|
||||
}
|
||||
|
||||
void deregisterEHFrames() override
|
||||
|
@ -770,25 +774,6 @@ jit_compiler::~jit_compiler()
|
|||
{
|
||||
}
|
||||
|
||||
bool jit_compiler::has_ssse3() const
|
||||
{
|
||||
if (m_cpu == "generic" ||
|
||||
m_cpu == "k8" ||
|
||||
m_cpu == "opteron" ||
|
||||
m_cpu == "athlon64" ||
|
||||
m_cpu == "athlon-fx" ||
|
||||
m_cpu == "k8-sse3" ||
|
||||
m_cpu == "opteron-sse3" ||
|
||||
m_cpu == "athlon64-sse3" ||
|
||||
m_cpu == "amdfam10" ||
|
||||
m_cpu == "barcelona")
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void jit_compiler::add(std::unique_ptr<llvm::Module> module, const std::string& path)
|
||||
{
|
||||
ObjectCache cache{path};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue