Merry
de4154aa18
externals: Remove mp and replace uses with mcl
2022-04-19 16:28:28 +01:00
Wunkolo
27bbf4501b
backend/x64: Use upper EVEX registers as scratch space
...
AVX512 adds an additional **16** simd registers, for a total of 32 simd
registers, accessible by utilizing EVEX encoded instructions. Rather
than using the `ScratchXmm` function, adding additional
register-pressure and spilling, AVX512-enabled contexts can just
directly use `xmm{16-31}` registers as intermediate scratch registers.
2022-04-06 17:41:55 +01:00
merry
644172477e
Implement enable_cycle_counting
2022-04-03 16:10:32 +01:00
merry
aac1f6ab1b
Implement halt_reason
...
* Provide reason for halting and atomically update this.
* Allow user to specify a halt reason and return this information on halt.
* Check if halt was requested prior to starting execution.
2022-04-03 15:37:20 +01:00
merry
116297ccd5
common: Add atomic
...
Implement atomic or operation on u32
2022-04-03 15:30:39 +01:00
merry
f6be6bc14b
emit_x64_memory: Appease MSVC
...
Associated with changes in 8bcd46b7e9dc487da217b216c908f2ef15e7a8cf
2022-04-02 20:41:34 +01:00
merry
8bcd46b7e9
emit_x64_memory: Ensure 128-bit loads/stores are atomic
2022-04-02 19:33:48 +01:00
merry
e27733464b
emit_x64_memory: Always order exclusive accesses
2022-04-02 19:33:15 +01:00
merry
cd91a36613
emit_x64_memory: Fix bug in 16-bit ordered EmitReadMemoryMov
2022-04-02 19:32:46 +01:00
merry
9cadab8fa9
backend/emit_x64_memory: Enforce memory ordering
2022-03-29 20:57:34 +01:00
merry
675efecf47
emit_x64_memory: Combine A32 and A64 memory code
2022-03-29 20:51:50 +01:00
merry
af2d50288f
A64/sys_ic: Return to dispatch on possible invalidation
2022-03-27 15:27:34 +01:00
merry
cf0709c7f1
emit_x64_memory: Share Emit{Read,Write}MemoryMove
2022-03-26 16:51:55 +00:00
merry
64adc91ca2
emit_x64_memory: Move EmitFastmemVAddr to common file
2022-03-26 16:49:14 +00:00
merry
18f02e2088
emit_x64_memory: Move EmitVAddrLookup to common file
2022-03-26 16:46:06 +00:00
merry
3d657c450a
emit_x64_memory: Share EmitDetectMisalignedVAddr
2022-03-26 16:09:56 +00:00
merry
fb586604b4
emit_x64_memory: Share constants
2022-03-26 16:05:03 +00:00
merry
5cf2d59913
A32: Add AccType information and propagate to IR-level
2022-03-26 15:38:10 +00:00
merry
614ecb7020
A64: Propagate AccType information to IR-level
2022-03-26 15:38:10 +00:00
merry
879f211686
ir/value: Add AccType to Value
2022-03-26 15:38:10 +00:00
Alexandre Bouvier
9d369436d8
cmake: Fix unicorn and llvm
2022-03-22 20:27:01 +00:00
merry
c78b82dd2c
vfp: VLDM is UNPREDICABLE when n is R15 in thumb mode
2022-03-20 20:52:11 +00:00
Sergi Granell
0ec4a23710
thumb32: Implement LDA and STL
...
Note that those are ARMv8 additions to the Thumb instruction set.
2022-03-20 20:16:27 +00:00
merry
e1a266b929
A32: Implement SHA256SU1
2022-03-20 13:59:18 +00:00
merry
ab4c6cfefb
A32: Implement SHA256SU0
2022-03-20 13:59:18 +00:00
merry
c022a778d6
A32: Implement SHA256H, SHA256H2
2022-03-20 13:59:18 +00:00
merry
bb713194a0
backend/x64: Implement SHA256 polyfills
2022-03-20 13:59:18 +00:00
merry
98cff8dd0d
IR: Implement SHA256MessageSchedule{0,1}
2022-03-20 13:59:18 +00:00
merry
f0a4bf1f6a
IR: Implement SHA256Hash
2022-03-20 13:59:18 +00:00
merry
a4daad6336
block_of_code: Add HostFeature SHA
2022-03-20 00:13:03 +00:00
Merry
bcfe377aaa
x64/reg_alloc: More zero extension paranoia
2022-03-06 12:24:50 +00:00
Merry
316b95bb3f
{a32,a64}_emit_x64_memory: Zero extension paranoia
2022-03-06 12:10:40 +00:00
Merry
0fd32c5fa4
a64_emit_x64_memory: Fix bug in 128 bit exclusive write fallback
2022-02-28 19:53:43 +00:00
merry
5ea2b49ef0
backend/x64: Inline exclusive memory access operations ( #664 )
...
* a64_emit_x64_memory: Add Unsafe_IgnoreGlobalMonitor optimization
* a32_emit_x64_memory: Add Unsafe_IgnoreGlobalMonitor optimization
* a32_emit_x64_memory: Remove dead code
* {a32,a64}_emit_x64_memory: Also verify vaddr in Exclusive{Read,Write}MemoryInlineUnsafe
* a64_emit_x64_memory: Full fallback for ExclusiveWriteMemoryInlineUnsafe
* a64_emit_x64_memory: Inline full locking
* a64_emit_x64_memory: Allow inlined locking to be optionally removed
* spin_lock: Use xbyak instead of inline asm
* a64_emit_x64_memory: Recompile on exclusive fastmem failure
* Avoid variable shadowing
* a32_emit_x64_memory: Implement recompilation
* Fix recompilation
* spin_lock: Clang format fix
* fix fallback function calls
2022-02-28 08:13:10 +00:00
merry
0a11e79b55
backend/x64: Ensure all HostCalls are appropriately zero-extended
2022-02-27 20:04:44 +00:00
merry
6c4fa780e0
{a32,a64}_emit_x64_memory: Ensure return value of fastmem callback are zero-extended
2022-02-27 19:58:23 +00:00
merry
593de127d2
a64_emit_x64: Clear fastmem patch information on ClearCache
2022-02-27 19:50:05 +00:00
Merry
c90173151e
backend/x64: Split off memory emitters
2022-02-26 21:25:09 +00:00
Merry
19a423034e
block_of_code: Fix inaccurate size reporting in SpaceRemaining
...
Typo: getCode should be getCurr: Instead of comparing against the current pointer,
we were incorrectly comparing against the start of memory
2022-02-26 16:09:11 +00:00
Merry
ea08a389b4
emit_x64_floating_point: EmitFPToFixed: No need to round if rounding_mode == TowardsZero
...
cvttsd2si truncates during operation
2022-02-23 20:44:02 +00:00
merry
b34214f953
emit_x64_floating_point: Improve EmitFPToFixed codegen
2022-02-23 19:42:15 +00:00
merry
5fe274f510
emit_x64_floating_point: Deinterlace 64-bit FPToFixed signed/unsigned codepaths
2022-02-23 19:14:41 +00:00
merry
b8dd1c7510
emit_x64_floating_point: Correct dead-code warning in MSVC 2019
2022-02-12 22:07:26 +00:00
merry
95a1ebfb97
backend/x64: Bugfix: A32 frontent also uses FPSCR.QC
2022-02-12 21:46:45 +00:00
Fernando Sahmkow
a8cbfd9af4
X86_Backend: set fences correctly for memory barriers and synchronization.
2022-02-01 14:27:54 +00:00
liushuyu
40afbe1927
disassembler_thumb: fix formatting issues with fmt 8.1.x ...
...
... fmt 8.1.0 added more formatting checks and Cond can't be formatted
directly now
2022-01-05 21:49:51 -07:00
Wunkolo
ad5465d6ce
constant_pool: Use tsl::robin_map rather than unordered_map
...
Finding a much more drastic improvement with `robin_map`.
`map`:
```
[master] % hyperfine -r 100 "./dynarmic_tests --durations yes"
Benchmark 1: ./dynarmic_tests --durations yes
Time (mean ± σ): 567.0 ms ± 6.9 ms [User: 513.1 ms, System: 53.2 ms]
Range (min … max): 554.4 ms … 588.1 ms 100 runs
```
`unordered_map`:
```
[opt_const_pool] % hyperfine -r 100 "./dynarmic_tests --durations yes"
Benchmark 1: ./dynarmic_tests --durations yes
Time (mean ± σ): 561.1 ms ± 4.5 ms [User: 508.1 ms, System: 52.3 ms]
Range (min … max): 552.6 ms … 574.2 ms 100 runs
```
`tsl::robin_map`:
```
[opt_const_pool] % hyperfine -r 100 "./dynarmic_tests --durations yes"
Benchmark 1: ./dynarmic_tests --durations yes
Time (mean ± σ): 553.5 ms ± 5.6 ms [User: 500.7 ms, System: 52.1 ms]
Range (min … max): 545.7 ms … 569.3 ms 100 runs
```
2022-01-01 12:13:13 +00:00
Wunkolo
e57bb0569a
constant_pool: Convert hashtype from tuple to pair
2022-01-01 12:13:13 +00:00
Wunkolo
befc22a61e
constant_pool: Use unordered_map rather than map
...
`map` is an ordinal structure with log(n) time searches.
`unordered_map` uses O(1) average-time searches and O(n) in the worst
case where a bucket has a to a colliding hash and has to start chaining.
The unordered version should speed up our general-case when looking up
constants.
I've added a trivial order-dependent(_(0,1) and (1,0) will return a
different hash_) hash to combine a 128-bit constant into a
64-bit hash that generally will not collide, using a bit-rotate to
preserve entropy.
2022-01-01 12:13:13 +00:00
Morph
28714ee75a
general: Rename files with duplicate names
...
In MSVC, having files with identical filenames will result into massive slowdowns when compiling.
The approach I have taken to resolve this is renaming the identically named files in frontend/(A32, A64) to (a32, a64)_filename.cpp/h
2021-12-23 11:38:58 +00:00