1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-22 18:53:28 +01:00
Commit Graph

844 Commits

Author SHA1 Message Date
Nekotekina
a6cde36dc4 Link LLVMAsmParser library 2019-05-19 17:46:55 +03:00
scribam
786dc6ef40 Use if constexpr in hash_struct function 2019-05-12 18:32:11 +03:00
scribam
6c5ea068c9 Remove redundant semicolons
Fix "-Wextra-semi" warnings
2019-05-12 18:32:11 +03:00
Nekotekina
5d33d9a3d9 Enable most warnings in GCC 2019-05-11 02:13:19 +03:00
Nekotekina
7492f335e9 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)
2019-05-11 02:13:19 +03:00
msuih
be6d9af1ab Print OS info to log
Credit to @maximilian578 for help
2019-04-25 20:20:37 +03:00
Megamouse
b929c13c45 implement get_firmware_version
add firmware version to the first line in the log
2019-04-16 22:13:28 +02:00
Nekotekina
e064b92058 mutex.h: fix warning (unary minus unsigned) 2019-04-13 22:56:11 +03:00
Nekotekina
d52df9352c fs::rename, use renameat2 on Linux 2019-04-13 22:56:11 +03:00
Nekotekina
0736fc8b28 Add fs::file::set_delete 2019-04-10 13:58:12 +03:00
Nekotekina
a54d9c527f Simplify fs::file::get_handle
Via fs::file_base::get_native_handle method
2019-04-10 13:58:12 +03:00
eladash
a3f65084df Fix sys_process_exit2 when SPUs are at av handler 2019-03-31 14:57:21 +03:00
eladash
16f86b2458 Fix page fault area range check
Range end check was bugged (always true), also rewrite it so vm::get would be called only once
2019-03-31 14:57:21 +03:00
Nekotekina
d873802b9c Use LLVM 9
Use new add/sub with saturation intrinsics
2019-03-30 01:36:48 +03:00
Nekotekina
4b381fbbb1 Implement spu_runtime::reset
To handle JIT: Out Of Memory error.
2019-03-23 02:43:41 +03:00
Nekotekina
849411693a PPU LLVM: add MemoryManager3
For temporary allocations.
Add flags in jit_compiler constructor.
2019-03-23 02:43:41 +03:00
Jan Beich
1a13d3ae4e OpenBSD doesn't have mcontext_t
`<signal.h>` provides `typedef struct sigcontext ucontext_t`
2019-03-19 22:24:49 +03:00
kd-11
bb65e45614 rsx: Implement GPU acceleration for rotated images 2019-03-17 21:50:11 +03:00
RipleyTom
980c3d6fe8 Fix lf_queue destructor 2019-03-13 15:59:13 +03:00
Nekotekina
eae5b9e049 Rewrite mulh64/umulh64
Use __int128_t/__uint128_t idioms on GCC/Clang.
May result in better codegen by avoiding inline asm.
2019-03-13 00:16:43 +03:00
eladash
4a28319edf Implement SPU page faults notifications
* Implement both RawSPU and threaded SPU page fault recovery
* Guard page_fault_notification_entries access with a mutex
* Add missing lock in sys_ppu_thread_recover_page_fault/get_page_fault_context
* Fix EINVAL check in sys_ppu_thread_recover_page_fault, previously when the event was not found begin() was erased and
CELL_OK was returned.
* Fixed page fault recovery waiting logic:
- Do not rely on a single thread_ctrl notification (unsafe)
- Avoided a race where ::awake(ppu) can be called before ::sleep(ppu) therefore nop-ing out the notification
* Avoid inconsistencies with vm flags on page fault cause detection
* Fix sys_mmapper_enable_page_fault_notification EBUSY check
from RE it's allowed to register the same queue twice (on a different area) but not to enable page fault notifications twice
2019-03-12 13:28:31 +03:00
Nekotekina
efe067bfa0 LLVM: handle cascadelake CPU name 2019-03-05 21:47:34 +03:00
Nekotekina
ebb24375d1 LLVM: handle icelake-client and icelake-server CPU names
Correct AVX / AVX-512 disabling logic
2019-03-01 00:20:04 +03:00
Nekotekina
7f6a410770 Add dummy __has_builtin macro, use rotate builtins if possible 2019-03-01 00:08:19 +03:00
Nekotekina
9ee2867247 Improve count leading/trailing zeros implementation
Use x86 intrinsics if compiled with appropriate instruction support
2019-03-01 00:08:19 +03:00
Nekotekina
7b344b7654 Implement utils::refptr for typemap (with && syntax)
Ref-counted pointer, object is always allocated on heap.
Rvalue reference && in typemap is converted to refptr for convenience.
2019-03-01 00:08:19 +03:00
Nekotekina
6c5d9fffaa typemap: improve pointer support
If stored object is a pointer, access dereferenced object directly via ->
2019-03-01 00:08:19 +03:00
eladash
25aa5f80a6 Fix access violations reporting on RSX
and on other threads that do not have cpu_thread handler
2019-01-30 18:44:29 +03:00
eladash
b61492ca30 Dont call std::terminate() after normal access violation handling 2019-01-30 18:44:29 +03:00
Nekotekina
f50d9cc136 Initial support for HLE in internal API
atomic_storage<>: add compare_exchange_hle_acq and fetch_add_hle_rel
shared_mutex: add methods (un)lock_hle and (un)lock_shared_hle
Clang: 👅
2019-01-29 04:33:59 +03:00
Nekotekina
58358e85dd spu_runtime::add minor optimization
Use preallocated vectors in trampoline generation subroutine
2019-01-29 03:32:16 +03:00
Nekotekina
2b66abaf10 Implement atomic_t<>::release
More relaxed store with release memory order
2019-01-29 03:32:16 +03:00
Nekotekina
4292997a01 Added jit_runtime class
Is a memory manager for ASMJIT, replaces asmjit::JitRuntime
Unified memory manager for ASMJIT and LLVM
Unified SPU trampoline generation
Remove previous workarounds
2019-01-29 03:32:16 +03:00
Nekotekina
d5eda98e49 Fix le_t<> compilation error
Use memcpy for copying
2019-01-22 22:02:03 +03:00
Nekotekina
4f152ad126 SPU: multithread compilation
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Nekotekina
a419e98acb Move PPU and shader cache
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size

Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina
81c50bad69 lf_queue: implement wait() method
Synchronization does not occupy additional space by reusing LSB
2019-01-13 14:45:36 +03:00
Nekotekina
ac775cd75e Simplify gui_listener
Use lf_queue
2019-01-13 14:45:36 +03:00
Nekotekina
3fed4dcc5a Remove lf_mpsc, lf_spsc
Not practical
2019-01-13 14:45:36 +03:00
Nekotekina
435f60d503 lf_queue: add iterator support
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina
bd9131ae1c Implement fs::get_cache_dir
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
Nekotekina
20efed66e9 Implement RPCS3_CONFIG_DIR env variable (Win32)
Overrides config location, should end with / or \
2019-01-13 14:45:36 +03:00
JohnHolmesII
be75a564ca Fix builds with musl c 2018-12-30 21:31:06 +03:00
Jan Beich
33f7a39f5d fs: implement copy_file() fallback
sendfile(2) on DragonFly and FreeBSD can only write into sockets.
2018-12-29 18:07:45 +03:00
msuih
dbd4814584 Disable thread assignment for Intel 2018-12-24 19:33:08 +00:00
msuih
1dd3a4b3f0 Detect hyperthreading on Windows 2018-12-24 19:33:08 +00:00
vit9696
5a40c1802b Support macOS bundling for binary distribution 2018-12-16 18:17:21 +03:00
Nekotekina
96cabeadff Rewrite condition variables
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)

shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina
febe4d4a10 Implement class cond_x16
Use as reservation notifier
Limited to 16 threads but allows more precise control of contention
2018-11-26 00:23:29 +03:00
vit9696
634a5fa31c Fix macOS compilation 2018-11-19 14:39:33 +03:00