Nekotekina
445e5def42
Remove safe_reader_lock, safe_writer_lock
...
It worked as a simple recursive locker for shared_mutex
But its design is flawed and thus can't be fully implemented
2018-09-15 17:09:56 +03:00
Nekotekina
e8b5555630
Rewrite vfs::get and vfs::mount
...
Preprocess . and .. correctly
Don't use recursive locking
Also use std::string_view
Fix format system for std::string and std::string_view
Fix fmt::merge for std::string_view
2018-09-15 17:09:56 +03:00
Nekotekina
2226125728
atomic_t<>: remove inline assignment
...
Add atomic_op/fetch_op overloads with template argument (may be removed in future)
Remove args... in atomic_op (capturing lambda is preferred)
2018-09-09 12:59:24 +03:00
Nekotekina
fb5cdf9769
atomic_t<>: extend fetch_op to support cancellation
...
Use std::invoke inside atomic_op/fetch_op
Remove op_fetch because it's easily replaced
Add fetch_dec_sat algorithm (conditional decrement)
2018-09-08 00:32:04 +03:00
Nekotekina
ed9fb8405b
Move rotate/cntlz/cnttz helpers to Utilities/asm.h
2018-09-08 00:32:04 +03:00
Nekotekina
ee96807305
Remove explicit_bool_t, ignore, multicast<>
...
Remove vm::ptr operator %
This was a bad idea but explicit_bool_t was created almost for it
Other removed types are unused and have little to no meaning
2018-09-08 00:32:04 +03:00
Nekotekina
99ffc3fca9
Use std::invoke_result_t
...
Also simplify idm code
2018-09-08 00:32:04 +03:00
Nekotekina
d750e955c3
Use std::uncaught_exceptions()
...
Also remove wrong attributes
2018-09-08 00:32:04 +03:00
Nekotekina
ea4a3b2476
bs_t<>: add missing operators
2018-09-08 00:32:04 +03:00
scribam
549a5370d8
cleanup: remove recursive_wrapper.hpp
2018-09-06 13:15:59 +03:00
scribam
a745f02a07
cleanup: remove compatibility code for old versions of clang
2018-09-06 13:15:59 +03:00
scribam
d7bb59cd99
c++17: use std::size
2018-09-06 13:15:59 +03:00
Nekotekina
ca5158a03e
Cleanup semaphore<> (sema.h) and mutex.h (shared_mutex)
...
Remove semaphore_lock and writer_lock classes, replace with std::lock_guard
Change semaphore<> interface to Lockable (+ exotic try_unlock method)
2018-09-03 23:00:36 +03:00
Nekotekina
ce4c4696dd
Try to get rid of SIZE_32 macro
2018-09-03 21:40:36 +03:00
Nekotekina
8abe6489ed
Mega-cleanup for atomic_t<> and named bit-sets bs_t<>
...
Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
2018-09-03 21:40:36 +03:00
Nekotekina
a6d06b2e20
Use fold expr in fs::write_file
2018-09-03 21:40:36 +03:00
Nekotekina
01b4c68238
Remove EXPECTS/ENSURES macro
2018-09-03 21:40:36 +03:00
Nekotekina
69f0ad0d68
Remove ALIGN_32 macro
...
It's never used in expressions like SIZE_32(T) * n, so it doesn't help to fix any warning issued due to truncation.
2018-09-03 21:40:36 +03:00
Lassi Hämäläinen
79cf2832ae
Remove Utilities/variant.hpp and use C++17 variant
...
- Remove also Utilities/variant_visitor.hpp
- Fix variant and variant_visitor usages and #includes
2018-08-31 17:49:59 +04:00
Jan Beich
cd6bf37d06
Utilities: explicitly add more includes found by GCC
...
Utilities/Log.cpp: In member function 'void logs::file_writer::log(logs::level, const char*, std::size_t)':
Utilities/Log.cpp:559:9: error: 'memcpy' is not a member of 'std'
std::memcpy(pos, text, frag);
^~~~~~
Utilities/Log.cpp:559:9: note: suggested alternative: 'empty'
std::memcpy(pos, text, frag);
^~~~~~
empty
Utilities/Log.cpp:560:9: error: 'memcpy' is not a member of 'std'
std::memcpy(m_fptr, text + frag, size - frag);
^~~~~~
Utilities/Log.cpp:560:9: note: suggested alternative: 'empty'
std::memcpy(m_fptr, text + frag, size - frag);
^~~~~~
empty
Utilities/Log.cpp:564:9: error: 'memcpy' is not a member of 'std'
std::memcpy(pos, text, size);
^~~~~~
Utilities/Log.cpp:564:9: note: suggested alternative: 'empty'
std::memcpy(pos, text, size);
^~~~~~
empty
Utilities/sync.h: In member function 'int futex(int*, int, int, const timespec*, int*, int)::futex_map::operator()(int*, int, int, const timespec*, int*, uint)':
Utilities/sync.h:110:20: error: 'find' is not a member of 'std'
map.erase(std::find(map.find(uaddr), map.end(), ref));
^~~~
Utilities/sync.h:110:20: note: suggested alternative: 'rend'
map.erase(std::find(map.find(uaddr), map.end(), ref));
^~~~
rend
2018-08-31 03:19:17 +04:00
Nekotekina
85fa0942e7
vm: allow 4k-aligned allocations for vm::stack
...
Fix utils::shm::map logic for MapViewOfFileEx
2018-08-30 14:56:45 +03:00
Dzmitry Malyshau
c452b43ebc
Basic support for Vulkan Portability on OSX
2018-08-28 21:20:11 +03:00
zarroboogs
23f5cee653
Git Revision Fix ( #5043 )
...
* fix shotrened git revision in version string
2018-08-27 22:53:45 +04:00
Nekotekina
84abb9923a
Don't use std::aligned_storage
...
Don't need its limiting behaviour anyway
2018-08-25 15:47:03 +03:00
Nekotekina
363811981d
Reintroduce LOG_CHANNEL
...
Groundwork for further improvements
2018-08-25 15:39:00 +03:00
Nekotekina
57f394e156
Fix type-safe formatting
2018-08-25 12:06:57 +03:00
Nekotekina
1c6c24f8ac
Update GSL and yaml-cpp submodules
2018-08-25 01:15:47 +03:00
Nekotekina
bb19feca96
Workaround MSVC bug
...
It fails to parse Args... in fmt::get_type_info<>()
2018-08-25 01:15:47 +03:00
Nekotekina
3aa6741b8c
Simplify error_code
2018-08-25 01:15:47 +03:00
Nekotekina
56a165ecdc
Rearrange atomic operator internals
2018-08-25 01:15:47 +03:00
Nekotekina
76bac80dde
Add MATCH macro
2018-08-24 16:44:19 +03:00
Nekotekina
6cc7d1fb26
Use std::void_t
2018-08-24 16:44:19 +03:00
kd-11
1200ca8172
rsx: Optimize hash_struct; vk cleanup
2018-08-18 16:14:30 +03:00
Nekotekina
441541a42f
Implement fs::make_gather
2018-08-14 12:46:22 +03:00
eladash
f349695a75
Rsx: rewrite address translation
2018-08-13 16:16:34 +03:00
Megamouse
d057c79733
RSX: use localtime_s instead of localtime
2018-07-28 23:10:45 +02:00
scribam
b09321354a
clang: fix compilation on 3.7
2018-07-15 12:51:09 +04:00
scribam
4babe9076b
clang: fix compilation on 3.8
2018-07-15 12:51:09 +04:00
kd-11
46abe0f315
vm: Fix memory mirror performance regression
2018-07-14 15:19:56 +03:00
kd-11
c5b2469fe7
silence warning
2018-07-12 18:02:28 +03:00
scribam
3935cef691
pugixml: update submodule and build integration
2018-06-24 02:02:36 +04:00
Nekotekina
e4da284176
SPU: analyser v4 and fixes
...
Build SPU cache after PPU, fix mixing progress
SPU ASMJIT: add support for Giga mode
SPU ASMJIT: use the same spu.log location as SPU LLVM
SPU: improve spu.log disasm
SPU: improve trampolines, unify with SPU ASMJIT
SPU: decode interrupt handler address from BR/BRA at 0x0
SPU LLVM: support Mega/Giga modes
SPU LLVM: implement function chunks
SPU LLVM: use PHI nodes, value visibility across basic blocks
SPU LLVM: implement function chunk table
New simple memory manager for LLVM (bugfix)
2018-06-21 22:29:34 +03:00
VelocityRa
9d431e77a4
Utilities/geometry: Add unsigned specializations to typedefs
2018-06-18 22:34:26 +03:00
Megamouse
af71cf0922
implement "Enable TSX" combobox
2018-06-17 00:43:00 +04:00
scribam
968f3995ff
Merge branch 'master' into asmjit
2018-06-13 09:27:12 +02:00
scribam
14dc1fead6
yaml-cpp: update submodule and build integration
2018-06-13 04:25:34 +04:00
scribam
3a9778668a
asmjit: update build integration
2018-06-12 20:03:53 +02:00
Daniel Valentine
fb20c27e7b
Delay GDB server launch until emulator run ( #4658 )
2018-06-08 13:34:27 +01:00
Nekotekina
37577714fa
SPU LLVM: emulate PSHUFB
...
For targets without SSSE3 support
2018-05-30 20:35:35 +03:00
Nekotekina
1193ab0b89
Use memfd_create (Linux)
2018-05-30 20:35:35 +03:00
Jan Beich
3d632a3774
CPUStats: add support for macOS and BSDs
2018-05-30 12:35:41 +03:00
VelocityRa
8981227644
util/thread_ctrl: Method for measuring cycles a thread has run for
...
Also add a getter for the native thread handle.
2018-05-30 12:35:41 +03:00
VelocityRa
5defa9c7b0
util: Class for getting overall CPU usage and thread count
2018-05-30 12:35:41 +03:00
kd-11
824340363d
disable thread scheduler on intel
2018-05-29 13:54:30 +03:00
Nekotekina
a33f297315
Replace notifier::lock_shared() with try_lock_shared()
...
Also add notify_one(), try_lock() and unlock()
Move some code in cond.cpp
2018-05-21 00:18:37 +03:00
Nekotekina
33a1c743a4
Transactions: move loops inside
...
Rewrite loops in assembler (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
0b1c8bc676
Change retire strategy in cond_variable::imp_wait (WIN32)
...
Instead of waiting infinitely, try and yield until success
2018-05-17 21:29:49 +03:00
Nekotekina
08cd8e0cb1
Cleanup: unused imports
2018-05-17 18:33:44 +03:00
pauls-gh
fdef77d779
Set Windows timer resolution to 0,5ms ( #4579 )
...
* Fix for https://github.com/RPCS3/rpcs3/issues/4569
(Win 10 update 1803 performance regression)
2018-05-17 15:00:22 +04:00
Jan Beich
a68dac7282
JIT: add missing header after fd525ae1cf
...
In file included from Utilities/JIT.cpp:1:
Utilities/JIT.h:33:23: error: implicit instantiation of undefined template 'std::__1::array<asmjit::X86Gp, 4>'
std::array<X86Gp, 4> args;
^
/usr/include/c++/v1/__tuple:223:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
^
2018-05-17 04:42:05 +04:00
Nekotekina
367f039523
Build transactions at runtime
...
Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
2018-05-16 17:31:58 +03:00
Nekotekina
fd525ae1cf
Implement build_function_asm
...
Uses ASMJIT to build function at startup
2018-05-16 15:48:35 +03:00
Nekotekina
a46ef4f29a
Increase open file limit on Linux
...
Add some assertions to VirtualMemory.cpp
2018-05-13 23:56:43 +03:00
Jan Beich
177da2984d
VirtualMemory: add missing header after 5d15d64ec8
( #4532 )
...
Utilities/VirtualMemory.cpp:123:8: error: use of undeclared identifier 'errno'
if (errno != EEXIST)
^
Utilities/VirtualMemory.cpp:123:17: error: use of undeclared identifier 'EEXIST'
if (errno != EEXIST)
^
2018-05-13 11:34:33 +03:00
Nekotekina
a77896c1b6
Update LLVM commit, use small code model
2018-05-13 00:03:08 +03:00
Nekotekina
5d15d64ec8
Memory mirror support
...
Implemented utils::memory_release (not used)
Implemented utils::shm class (handler for shared memory)
Improved sys_mmapper syscalls
Rewritten ppu_patch function
Implemented vm::get_super_ptr (ignores memory protection)
Minimal allocation alignment increased to 0x10000
2018-05-09 23:35:34 +03:00
Nekotekina
cfa9b163fd
Implement fmt::to_lower
...
It was strangely removed...
2018-05-09 22:19:55 +03:00
Nekotekina
eae78a8711
Improve fs::create_path
...
Don't fail if already exists
2018-05-09 22:19:55 +03:00
Nekotekina
88dc6b7700
Cfg: add missing get() methods
2018-05-09 22:19:55 +03:00
Nekotekina
a975ecdc4f
Use LLVM 6
2018-05-08 13:05:29 +03:00
Nekotekina
a7c34123a6
Improve dynamic_library
2018-05-08 13:05:29 +03:00
Nekotekina
841d8955de
Fix warning (fmt_unveil)
2018-04-22 00:06:49 +03:00
Nekotekina
8ca33bcb94
SPU ASMJIT v2.0
...
Use X86Assembler and blocks
2018-04-22 00:06:48 +03:00
Nekotekina
0797164fac
SPU: fix possible livelock
...
The bug affects TSX path
2018-04-07 20:51:21 +03:00
Nekotekina
2b5cf2455f
SPU: improve TSX usage
...
Reduce transaction failure amount
Remove vm::try_to_lock
2018-04-06 21:47:54 +03:00
Nekotekina
402ca480cd
Fix vm::check_addr usage
2018-04-01 22:39:48 +03:00
Birk Magnussen
c5caaa9211
Fix missing Detection for AVX OS Support
2018-03-24 03:30:27 +04:00
Nekotekina
20785b00f6
Implement fmt::base57
...
For future use
2018-03-22 23:24:58 +03:00
Nekotekina
19944eeed0
Implement SPRX precompilation
...
Automatically precompile firmware modules
Add "Create LLVM Cache" menu (for games)
Reimplement jit_compiler::cpu as static method
2018-03-22 23:24:58 +03:00
Nekotekina
f66d5adf5f
Prevent accessing incomplete RPCS3.log.gz
...
Use permissions to make it inaccessible
On Windows, autodelete the file
Implement fs::unread for this purpose
Rename fs::unshare to fs::lock
Fix fs::lock correctness
2018-03-17 00:39:45 +03:00
Jan Beich
e487480ca9
Thread: unbreak build on BSDs after ac82ecf387
...
Utilities/Thread.cpp:1644:2: error: use of undeclared identifier 'pthread_setname_np'; did you mean 'pthread_set_name_np'?
pthread_setname_np(pthread_self(), m_name.substr(0, 15).c_str());
^~~~~~~~~~~~~~~~~~
pthread_set_name_np
/usr/include/pthread_np.h:58:6: note: 'pthread_set_name_np' declared here
void pthread_set_name_np(pthread_t, const char *);
^
2018-03-13 12:51:22 +04:00
Nekotekina
ac82ecf387
Use pthread_setname_np (Linux, GDB)
2018-03-11 19:33:02 +03:00
Nekotekina
4b1c052030
Fix crash on exit after access violation
2018-03-11 19:33:02 +03:00
Nekotekina
7f542a5c99
Fix safe_writer_lock (typo)
2018-03-11 19:33:01 +03:00
Andrey
e0f53ace19
Improve GDB debug server ( #4027 )
...
* Made GDB debugger working with IDA
* Added async interrupts support
* Report proper thread after pausing
* Support attaching debugger before running app
2018-02-28 19:31:39 +04:00
Nekotekina
76be7d40ac
Remove PSP2
2018-02-09 15:24:46 +03:00
Nekotekina
d66e56392e
Handle exceptions at loading patch file
2018-02-08 20:46:13 +03:00
Nekotekina
e2439e962c
SPU: use XOP instructions
2018-02-08 20:46:13 +03:00
Zeke Sonxx
c21fa2d8bc
Make fs::dir::open skip forward on failed metadata instead of crashing
2018-02-04 00:21:40 +04:00
kd-11
ab17b49e15
scheduler stuff
...
- more threads for rsx
- better 1600
2018-01-22 11:43:35 +03:00
kd-11
cbc8bf01a1
cell/scheduler: Manage thread placement depending on cpu hardware
2018-01-19 12:03:57 +03:00
Greg V
fbceec47b8
Add support for Vulkan on Wayland
...
The variable VK_USE_PLATFORM_WAYLAND_KHR is actually used by the Vulkan
header, so use it here too.
2018-01-11 12:26:41 +03:00
Nekotekina
198e9dce1d
Fix #4005 regression
...
Delay unregister EH frames (Linux)
2018-01-01 10:41:07 +03:00
Nekotekina
d40aaf0391
PPU: use shared jit_compiler instance
...
(Linux) Fix deregisterEHFrames error message
2017-12-31 22:08:17 +03:00
Nekotekina
6d34dcd75f
SPU: add some AVX-512 variants
2017-12-20 00:04:09 +03:00
Nekotekina
61de20a633
RSX: remove SSSE3 dependency
2017-12-20 00:04:08 +03:00
scribam
42c2df877f
Remove std::move on a const variable
2017-12-10 16:48:33 +04:00
scribam
c2ae7ee402
Remove redondant "virtual" keyword when "override" is used
2017-12-10 16:48:33 +04:00
Ani
60f5929f81
Hotfix #3919 ( #3920 )
...
* Restore GIT_BRANCH
Removed by mistake on previous commit
* Fix commit count on AppVeyor builds
2017-12-08 23:53:05 +00:00
Ani
6b323d7e2e
Version adjustments
2017-12-08 22:46:19 +00:00