mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-04 14:08:37 +00:00
PPU LLVM: inline remaining vector instructions
This commit is contained in:
parent
04c9d01390
commit
209b14fbac
2 changed files with 42 additions and 45 deletions
|
|
@ -551,7 +551,7 @@ struct ppu_far_jumps_t
|
|||
auto& opd = vm::_ref<ppu_func_opd_t>(target);
|
||||
target = opd.addr;
|
||||
|
||||
// We modify LR to custom values here
|
||||
// We modify LR to custom values here
|
||||
link = false;
|
||||
|
||||
if (ppu)
|
||||
|
|
@ -566,7 +566,7 @@ struct ppu_far_jumps_t
|
|||
saved_info.saved_lr = std::exchange(ppu->lr, FIND_FUNC(ppu_return_from_far_jump));
|
||||
saved_info.saved_r2 = std::exchange(ppu->gpr[2], opd.rtoc);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (link && ppu)
|
||||
|
|
@ -1641,21 +1641,6 @@ void ppu_thread::stack_pop_verbose(u32 addr, u32 size) noexcept
|
|||
|
||||
extern ppu_function_t ppu_get_syscall(u64 code);
|
||||
|
||||
extern __m128 sse_exp2_ps(__m128 A);
|
||||
extern __m128 sse_log2_ps(__m128 A);
|
||||
extern __m128i sse_altivec_vperm(__m128i A, __m128i B, __m128i C);
|
||||
extern __m128i sse_altivec_vperm_v0(__m128i A, __m128i B, __m128i C);
|
||||
extern __m128i sse_altivec_lvsl(u64 addr);
|
||||
extern __m128i sse_altivec_lvsr(u64 addr);
|
||||
extern __m128i sse_cellbe_lvlx(u64 addr);
|
||||
extern __m128i sse_cellbe_lvrx(u64 addr);
|
||||
extern void sse_cellbe_stvlx(u64 addr, __m128i a);
|
||||
extern void sse_cellbe_stvrx(u64 addr, __m128i a);
|
||||
extern __m128i sse_cellbe_lvlx_v0(u64 addr);
|
||||
extern __m128i sse_cellbe_lvrx_v0(u64 addr);
|
||||
extern void sse_cellbe_stvlx_v0(u64 addr, __m128i a);
|
||||
extern void sse_cellbe_stvrx_v0(u64 addr, __m128i a);
|
||||
|
||||
void ppu_trap(ppu_thread& ppu, u64 addr)
|
||||
{
|
||||
ensure((addr & (~u64{0xffff'ffff} | 0x3)) == 0);
|
||||
|
|
@ -2999,14 +2984,6 @@ bool ppu_initialize(const ppu_module& info, bool check_only)
|
|||
{ "__ldarx", reinterpret_cast<u64>(ppu_ldarx) },
|
||||
{ "__stwcx", reinterpret_cast<u64>(ppu_stwcx) },
|
||||
{ "__stdcx", reinterpret_cast<u64>(ppu_stdcx) },
|
||||
{ "__vexptefp", reinterpret_cast<u64>(sse_exp2_ps) },
|
||||
{ "__vlogefp", reinterpret_cast<u64>(sse_log2_ps) },
|
||||
{ "__lvsl", reinterpret_cast<u64>(sse_altivec_lvsl) },
|
||||
{ "__lvsr", reinterpret_cast<u64>(sse_altivec_lvsr) },
|
||||
{ "__lvlx", s_use_ssse3 ? reinterpret_cast<u64>(sse_cellbe_lvlx) : reinterpret_cast<u64>(sse_cellbe_lvlx_v0) },
|
||||
{ "__lvrx", s_use_ssse3 ? reinterpret_cast<u64>(sse_cellbe_lvrx) : reinterpret_cast<u64>(sse_cellbe_lvrx_v0) },
|
||||
{ "__stvlx", s_use_ssse3 ? reinterpret_cast<u64>(sse_cellbe_stvlx) : reinterpret_cast<u64>(sse_cellbe_stvlx_v0) },
|
||||
{ "__stvrx", s_use_ssse3 ? reinterpret_cast<u64>(sse_cellbe_stvrx) : reinterpret_cast<u64>(sse_cellbe_stvrx_v0) },
|
||||
{ "__dcbz", reinterpret_cast<u64>(+[](u32 addr){ alignas(64) static constexpr u8 z[128]{}; do_cell_atomic_128_store(addr, z); }) },
|
||||
{ "__resupdate", reinterpret_cast<u64>(vm::reservation_update) },
|
||||
{ "__resinterp", reinterpret_cast<u64>(ppu_reservation_fallback) },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue