MerryMage
faf64f4a5f
EmitX64: JitState type as template parameter
2018-01-09 18:20:57 +00:00
MerryMage
d95a01bcb3
Package up emit context
2018-01-09 18:20:57 +00:00
MerryMage
d67332e333
Rename JitState to A32JitState
2018-01-09 18:20:57 +00:00
MerryMage
053c58f48f
backend_x64: Split A32 specific emission into separate class
2018-01-09 18:20:57 +00:00
MerryMage
42c83fadce
IR: Split off A32 specific opcodes
2018-01-09 18:20:57 +00:00
MerryMage
f5402c8d82
A32: Split off A32 specific IREmitter
2018-01-09 18:20:57 +00:00
MerryMage
3e569047a5
Label A32 specific code appropriately
2018-01-09 18:20:57 +00:00
Phanto-m
672069608f
emit_x64: InvalidateCacheRanges: erase blocks after iterating through the map ( #124 )
2017-12-18 15:13:40 +00:00
MerryMage
ce9c265df0
EmitPackedHalvingSub{U,S}16: SSE2 implementation
2017-12-14 15:08:18 +00:00
MerryMage
13fa10e743
Merge branch 'misc'
...
These commits introduce context save and restore, and a small number of
optimizations that depend on their use for performance.
2017-12-12 22:07:39 +00:00
MerryMage
a7d2fac2d3
EmitPackedHalvingAddU8: Add SSE2 implementation
2017-12-12 16:11:22 +00:00
MerryMage
16ed4bd511
EmitPackedHalvingAdd{U,S}16: Add SSE2 implementation
2017-12-12 15:57:26 +00:00
MerryMage
afc47e1733
emit_x64: EmitSet{Register,ExtendedRegister32,ExtendedRegister64}: Store from current source
2017-12-12 15:28:37 +00:00
MerryMage
d1d4705364
Add re-entry prediction to avoid std::unordered_map lookups
2017-12-12 15:22:23 +00:00
MerryMage
dd07033dce
emit_x64: Optimize code emitted by EmitGetCpsr
2017-12-12 14:25:22 +00:00
MerryMage
c823ecf524
interface: Allow saving and storing of contexts
2017-12-12 14:24:07 +00:00
MerryMage
976a098bf6
jit_state: Split off CPSR.NZCV
2017-12-12 14:24:07 +00:00
MerryMage
cfdc8d882f
jit_state: Split off CPSR.Q
2017-12-12 14:23:34 +00:00
MerryMage
2e6eda226c
jit_state: Split off CPSR.{E,T}
...
This allows us to improve code-emission for PopRSBHint. We also improve
code emission other terminals at the same time.
2017-12-12 14:23:34 +00:00
MerryMage
809ca5fcc2
jit_state: Split off CPSR.GE
2017-12-12 14:23:34 +00:00
MerryMage
e1daadff81
jit_state: Hide cpsr implementation
2017-12-12 14:23:34 +00:00
MerryMage
5b23e5b52e
emit_x64: Make RSB a stack
2017-12-12 14:23:32 +00:00
MerryMage
2577803203
emit_x64: Arguments to MostSignificantBit and IsZero are 32-bit
2017-12-09 16:26:11 +00:00
MerryMage
199e79cead
block_of_code: Remove vzeroupper
2017-12-09 16:26:03 +00:00
MerryMage
a2bd9a0e12
emit_x64: Reduce mxscr operations in EmitGetFpscr and EmitSetFpscr
2017-12-09 16:25:58 +00:00
MerryMage
96ad17ffc2
CMakeLists: Fixup boost
...
* boost is part of the public interface.
* Consider boost a system library so warnings from boost do not cause a build failure.
* If the parent project defines boost, use that.
2017-12-08 15:15:52 +00:00
MerryMage
5863ea7291
interface_x64: Fix MSVC cast warning
2017-12-07 20:26:46 +00:00
MerryMage
4110494ac4
emit_x64: Use boost::icl::interval_map to speed up ranged invalidation
2017-12-06 20:55:29 +00:00
MerryMage
b6b061f244
emit_x64: Remove unnecessary ABI overhead in ReadMemory, WriteMemory
2017-12-03 19:46:26 +00:00
MerryMage
f343c56268
block_of_code: Move MXCSR switching out of dispatch loop
...
Also clarify MXCSR entry/exit terminology
2017-12-03 15:39:47 +00:00
MerryMage
651460f941
Merge branch 'timing'
...
We do this to improve timing information before entering a supervior
function. We also do this to try and stay within JITted code as much
as possible, by updating the cycles we have remaining.
2017-12-03 15:20:43 +00:00
MerryMage
024fa2461c
Add AddTicks and GetTicksRemaining callbacks
2017-12-03 15:18:08 +00:00
MerryMage
6131d0e053
BlockOfCode: Detect space remaining
...
We also clear the code cache when we run out of space.
This closes #111 .
2017-12-03 14:32:30 +00:00
MerryMage
bb87d2540c
Remove unnecessary use of boost::make_optional
...
Closes #119 .
2017-11-28 20:56:54 +00:00
MerryMage
5f64bf9cfa
decoder_detail: Lambda captures may be unused if iota is an empty sequence
...
Closes #120
2017-11-28 19:48:32 +00:00
MerryMage
1d75664afd
Remove UNUSED macro
2017-11-28 19:44:33 +00:00
MerryMage
67c8e6e695
microinstruction: Remove DecrementRemainingUses
2017-11-27 20:10:23 +00:00
MerryMage
44e6ce33d4
reg_alloc: Add IsLastUse optimization for UseScratch
2017-11-27 19:51:54 +00:00
MerryMage
8e45418630
reg_alloc: Remove reliance on IR::Inst::DecrementRemainingUses
2017-11-27 19:51:54 +00:00
MerryMage
92ae4c783b
emit_x86: Standardize time of DefineValue call
2017-11-27 19:51:54 +00:00
MerryMage
6776f83a0c
basic_block: Add inst address and use count to DumpBlock
...
This additional output assists with debugging.
2017-11-27 19:51:54 +00:00
MerryMage
e53d00905f
Revert "reg_alloc: Improve performance of HostLocInfo ( #112 )"
...
This reverts commit ed4964e8924abfec65d429edcdbb89eb83a17016.
While this may arguably provide a JIT-time benefit, this cannot
possibly provide a runtime benefit.
2017-11-27 19:51:54 +00:00
Mat M
87c9b0affe
CMakeLists: Derive the source file listings from targets directly ( #118 )
...
This gets rid of the need to store to individual variables before creating
the target itself, cleaning up the variables in the surrounding scope a little bit.
2017-11-26 11:39:27 +00:00
MerryMage
993946fad8
emit_x64: Perform mask creation for packed instructions in SSE
2017-11-25 19:34:30 +00:00
MerryMage
6f4affd67f
emit_x64: Eliminate conversion of GE flags
...
* We do this so that we can simplify PackedSelect.
* We also try to minimise xmm-gpr/gpr-xmm transfers in PackedSelect.
2017-11-25 17:34:39 +00:00
MerryMage
311b6609aa
Implement IR instruction PackedSelect, reimplement SEL
2017-11-25 16:33:48 +00:00
MerryMage
81c5322f40
emit_x64: Remove SSSE3 implementation of PackedHalvingAddU8
...
It is much slower than the SSE2 implementation, so there's no point keeping it around.
2017-11-25 15:39:06 +00:00
MerryMage
f050825d4d
emit_x64: Improve code emission of FPCompare{32,64}
...
Replace if-chain with table lookup
2017-11-22 17:46:46 +00:00
MerryMage
c421a137c0
VCMP and VCMPE were the other way around
...
- This was due to a misunderstanding of what the E in VCMPE means.
- The E refers to an exception being raised when a QNaN is encountered.
- Added unit tests for VCMP{E}
2017-11-22 17:45:37 +00:00
MerryMage
dfbd3912a4
emit_x64: pmaxuw and pminuw require SSE 4.1
...
This commit is intended to close citra-emu/citra#3137 .
pmaxuw and pminuw were used to perform unsigned comparisons; we emulate
these using a signed comparison by offsetting the inputs by 0x8000 for
CPUs that do not support SSE 4.1.
2017-11-19 23:14:56 +00:00