MerryMage
69061d87fa
exception_handler_windows: Ignore irrelevant exceptions
2020-04-23 20:58:24 +01:00
MerryMage
5c0bb5cc63
Remove unreachable code (MSVC warnings)
2020-04-23 16:36:34 +01:00
MerryMage
a8a712c801
Relicense to 0BSD
2020-04-23 15:45:57 +01:00
MerryMage
d51a83d265
constant_propagation_pass: Fold IsZero
2020-04-22 21:07:09 +01:00
MerryMage
df1a0eecaf
constant_propagation_pass: Fold shifts
2020-04-22 21:07:09 +01:00
MerryMage
7242388577
A64: Specialize arithmetic shift SBFM aliases
2020-04-22 21:07:09 +01:00
MerryMage
a13392e432
A64: Specialize sign-extension SBFM aliases
2020-04-22 21:07:09 +01:00
MerryMage
4573511fe3
constant_propagation_pass: Prepare for IR matchers
2020-04-22 21:07:09 +01:00
MerryMage
0d7476d3ec
constant_propagation_pass: Propagate constants across commutative operations
...
e.g. (a & b) & c == a & (b & c) where b and c are constants
2020-04-22 21:07:09 +01:00
MerryMage
f59b9fb020
IR: Add ReplicateBit microinstruction
2020-04-22 21:07:09 +01:00
MerryMage
93adcfa5c6
value: Add GetInstRecursive
2020-04-22 21:06:18 +01:00
MerryMage
996d5cb841
ir_opt: Add IdentityRemovalPass
2020-04-22 21:06:18 +01:00
MerryMage
2ae68b13ed
value: Add IsIdentity function
2020-04-22 21:06:18 +01:00
MerryMage
8db4d65587
A64/decoder: Use a lookup table instead of doing a linear scan
2020-04-22 21:06:18 +01:00
MerryMage
0c51313479
A64: Add enable_optimizations configuration option
...
Allow library users to disable optimizations for debugging reasons.
2020-04-22 21:06:18 +01:00
MerryMage
8bef1afb9a
emit_x64_floating_point: SSE2 implementation for DenormalsAreZero
2020-04-22 21:06:18 +01:00
MerryMage
7c917f1c12
CMakeLists: Add DYNARMIC_FRONTENDS option
...
Allows library user to select which frontends to enable
2020-04-22 21:06:18 +01:00
MerryMage
668a43f815
A32: Detect unpredictable LDM/STM instructions
2020-04-22 21:06:18 +01:00
MerryMage
cd1560c664
emit_x64: Do not clear fast_dispatch_table unnecessarily
...
Reduces invalidation overhead
2020-04-22 21:06:18 +01:00
MerryMage
35402a9a17
a64_emit_x64: Fix location descriptor generation in GenTerminalHandlers
2020-04-22 21:06:18 +01:00
MerryMage
2770115757
emit_x64_data_processing: EmitMaskedShift: Use appropriately sized immediates
2020-04-22 21:06:18 +01:00
MerryMage
cc012a830c
exception_handler_windows: Do not attempt to call cb when cb isn't callable
2020-04-22 21:06:18 +01:00
MerryMage
4e83e81e58
backend/x64: Add fastmem support to Windows exception handler
2020-04-22 21:06:18 +01:00
MerryMage
b7b71d65c2
backend/x64: Add POSIX exception handler with fastmem support
2020-04-22 21:06:18 +01:00
MerryMage
2d348d2d68
backend/x64: Add macOS exception handler with fastmem support
2020-04-22 21:06:18 +01:00
MerryMage
4636055646
a32_emit_x64: Implement fastmem
2020-04-22 21:06:17 +01:00
MerryMage
f9b9081d4c
a32_emit_x64: Fully wrapped memory fallbacks
...
In the same style as the A64 backend
2020-04-22 21:06:17 +01:00
MerryMage
ad52c997f4
a32_emit_x64: Use r14 for page_table pointer
2020-04-22 21:06:17 +01:00
MerryMage
49fcfe040c
reg_alloc: Explicitly specify GPR and XMM order
...
This allows each backend to modify what registers they want to use and their preferred orderings
2020-04-22 21:06:17 +01:00
MerryMage
c232ad7971
a32_emit_x64: Make {Read,Write}Memory member functions of A32EmitX64
2020-04-22 21:06:17 +01:00
MerryMage
5267dbb8cf
emit_x64_saturation: Prefer changeBit to setBit
2020-04-22 21:06:17 +01:00
MerryMage
9d60d92692
backend/x64: Make ExceptionHandler its own class
2020-04-22 21:06:17 +01:00
MerryMage
325808949f
backend/x64: Rename namespace BackendX64 -> Backend::X64
2020-04-22 21:06:17 +01:00
MerryMage
f569d7913c
block_of_code: Reduce jmps in dispatcher loop
2020-04-22 21:06:17 +01:00
MerryMage
7e0c415473
block_of_code: Always specify codeptr to run from
2020-04-22 21:06:17 +01:00
MerryMage
b6536115ef
A32: Add Step
2020-04-22 21:06:17 +01:00
MerryMage
f69c77391e
A64: Add Step
...
Allow for stepping instruction-by-instruction
2020-04-22 21:06:17 +01:00
MerryMage
09d3c77d74
IR: Add masked shift IR instructions
...
Also use these in the A64 frontend to avoid the need to mask the shift amount.
2020-04-22 21:06:17 +01:00
MerryMage
bd88286b21
cast_util: Add FptrCast
...
Reduce unnecessary type duplication when casting a lambda to a function pointer.
2020-04-22 21:06:17 +01:00
MerryMage
fe583aa076
lut_from_list: Reduce number of required template arguments
2020-04-22 21:06:17 +01:00
MerryMage
81fcb4e537
mp: Migrate to shared version of mp library
2020-04-22 21:06:17 +01:00
MerryMage
28e5af20b5
mp/function_info: Add parameter_count_v
2020-04-22 21:04:24 +01:00
MerryMage
aa225a7dc4
bit_util: Add CountLeadingZeros
2020-04-22 21:04:24 +01:00
MerryMage
25e27282e3
a64_emit_x64: Reduce patchpoint sizes
2020-04-22 21:04:23 +01:00
MerryMage
a59c335b05
A64: Add options for detecting misaligned loads and stores
2020-04-22 21:04:23 +01:00
Marshall Mohror
1ebc1895ee
A32/x64: Create a global_offset optimization for the page table ( #507 )
...
Instead of looking up the page table like:
table[addr >> 12][addr & 0xFFF]
We can use a global offset on the table to query the memory like:
table[addr >> 12][addr]
This saves two instructions on *every* memory access within the recompiler.
Original change by degasus in A64 emitter
2020-04-22 21:04:23 +01:00
MerryMage
e10985d179
ir/basic_block: Add FastDispatchHint to TerminalToString
...
Use a boost::static_visitor to ensure this is caught at compile-time in the future.
2020-04-22 21:04:23 +01:00
Lioncash
af3614553b
A64/impl: Move AccType and MemOp enum into general IR emitter header
...
These will be used by both frontends in the future, so this performs the
migratory changes separate from the changes that will make use of them.
2020-04-22 21:04:23 +01:00
Markus Wick
93668c24be
A64/x64: Create a global_offset optimization for the page table.
...
Instead of looking up the page table like:
table[addr >> 12][addr & 0xFFF]
We can use a global offset on the table to query the memory like:
table[addr >> 12][addr]
This saves two instructions on *every* memory access within the recompiler.
Thanks at skmp for the idea.
2020-04-22 21:04:23 +01:00
MerryMage
6325ac23eb
a32_emit_x64: Use std::get_if in EmitA32Coproc*
2020-04-22 21:04:23 +01:00