Implement cpu_translator::pshufb<>()

Remove spu_translator::pshufb<>()
Improve PSHUFB emulation (pre-SSSE3)
Emit static shufflevector for the constant mask
PPU: Inline VPERM instruction
This commit is contained in:
Nekotekina 2018-06-28 16:21:08 +03:00
parent 41eab62ed7
commit a0bf103e8b
5 changed files with 77 additions and 36 deletions

View file

@ -1302,7 +1302,7 @@ extern void ppu_initialize(const ppu_module& info)
{ "__stdcx", (u64)&ppu_stdcx },
{ "__vexptefp", (u64)&sse_exp2_ps },
{ "__vlogefp", (u64)&sse_log2_ps },
{ "__vperm", s_use_ssse3 ? (u64)&sse_altivec_vperm : (u64)&sse_altivec_vperm_v0 },
{ "__vperm", s_use_ssse3 ? (u64)&sse_altivec_vperm : (u64)&sse_altivec_vperm_v0 }, // Obsolete
{ "__lvsl", (u64)&sse_altivec_lvsl },
{ "__lvsr", (u64)&sse_altivec_lvsr },
{ "__lvlx", s_use_ssse3 ? (u64)&sse_cellbe_lvlx : (u64)&sse_cellbe_lvlx_v0 },
@ -1685,7 +1685,7 @@ static void ppu_initialize2(jit_compiler& jit, const ppu_module& module_part, co
module->setTargetTriple(Triple::normalize(sys::getProcessTriple()));
// Initialize translator
PPUTranslator translator(jit.get_context(), module.get(), module_part);
PPUTranslator translator(jit.get_context(), module.get(), module_part, jit.has_ssse3());
// Define some types
const auto _void = Type::getVoidTy(jit.get_context());