mirror of
https://github.com/RPCSX/rpcsx.git
synced 2025-12-06 07:12:14 +01:00
* Update asmjit dependency (aarch64 branch) * Disable USE_DISCORD_RPC by default * Dump some JIT objects in rpcs3 cache dir * Add SIGILL handler for all platforms * Fix resetting zeroing denormals in thread pool * Refactor most v128:: utils into global gv_** functions * Refactor PPU interpreter (incomplete), remove "precise" * - Instruction specializations with multiple accuracy flags * - Adjust calling convention for speed * - Removed precise/fast setting, replaced with static * - Started refactoring interpreters for building at runtime JIT * (I got tired of poor compiler optimizations) * - Expose some accuracy settings (SAT, NJ, VNAN, FPCC) * - Add exec_bytes PPU thread variable (akin to cycle count) * PPU LLVM: fix VCTUXS+VCTSXS instruction NaN results * SPU interpreter: remove "precise" for now (extremely non-portable) * - As with PPU, settings changed to static/dynamic for interpreters. * - Precise options will be implemented later * Fix termination after fatal error dialog
45 lines
878 B
C++
45 lines
878 B
C++
#pragma once
|
|
|
|
#include "PPUOpcodes.h"
|
|
|
|
class ppu_thread;
|
|
|
|
using ppu_intrp_func_t = void(*)(ppu_thread& ppu_, ppu_opcode_t op, be_t<u32>* this_op, struct ppu_intrp_func* next_fn);
|
|
|
|
struct ppu_intrp_func
|
|
{
|
|
ppu_intrp_func_t fn;
|
|
};
|
|
|
|
template <typename IT>
|
|
struct ppu_interpreter_t;
|
|
|
|
namespace asmjit
|
|
{
|
|
struct ppu_builder;
|
|
}
|
|
|
|
struct ppu_interpreter_rt_base
|
|
{
|
|
protected:
|
|
std::unique_ptr<ppu_interpreter_t<ppu_intrp_func_t>> ptrs;
|
|
|
|
ppu_interpreter_rt_base() noexcept;
|
|
|
|
ppu_interpreter_rt_base(const ppu_interpreter_rt_base&) = delete;
|
|
|
|
ppu_interpreter_rt_base& operator=(const ppu_interpreter_rt_base&) = delete;
|
|
|
|
virtual ~ppu_interpreter_rt_base();
|
|
};
|
|
|
|
struct ppu_interpreter_rt : ppu_interpreter_rt_base
|
|
{
|
|
ppu_interpreter_rt() noexcept;
|
|
|
|
ppu_intrp_func_t decode(u32 op) const noexcept;
|
|
|
|
private:
|
|
ppu_decoder<ppu_interpreter_t<ppu_intrp_func_t>, ppu_intrp_func_t> table;
|
|
};
|