MerryMage
3621a925b2
reg_alloc: Register allocator related constraints belong with the rest of the register allocator
...
HostLocToReg64 contained two DEBUG_ASSERTs invloving constraints that
really belonged to the register allocator.
The register allocator prevents allocation of RSP and R15 because those
are reserved for the stack pointer and the state pointer respectively.
2016-11-30 19:42:41 +00:00
MerryMage
5f11b4f50e
HostLoc: R15 is a GPR
2016-11-30 18:38:03 +00:00
Sebastian Valle
14eb70d7e4
VFP: Fixed the VCVT behavior when converting from unsigned 32-bit values. ( #51 )
...
Use a 64-bit register to hold the values so that we don't end up interpreting them as signed values.
2016-11-27 23:25:50 +00:00
Merry
0ff8c375af
Implement UHSUB8 and UHSUB16 ( #48 )
2016-11-26 18:27:21 +00:00
Merry
cb17f9a3ed
Implement SHADD8 and SHADD16 ( #47 )
2016-11-26 18:12:29 +00:00
MerryMage
c0c1bb1094
Implemented UHADD16
2016-11-26 11:28:20 +00:00
Sebastian Valle
4d44474ad4
Implemented the ARM UHADD8 instruction. ( #45 )
...
The x64 implementation uses the SSSE3 instruction PSHUFB.
A non-SSE fallback is provided in case the CPU doesn't support it.
2016-11-25 20:32:22 +00:00
MerryMage
b6f7b8babd
ir: Implement GetGEFlags, SetGEFlags
2016-11-23 19:44:27 +00:00
Mat M
6a2174ebfa
Add missing explicit specifiers ( #27 )
2016-09-07 12:08:48 +01:00
Mat M
6e0f27a500
types: Add helpers for determining single and doubleword extension registers ( #26 )
2016-09-07 12:08:35 +01:00
Mat M
5bc9ce544f
arm_types: Move into arm folder ( #25 )
2016-09-06 00:52:33 +01:00
MerryMage
1f61a3d7bc
jitstate: Rename fields s/guest_FPSCR/FPSCR/
2016-09-05 14:42:21 +01:00
Mat M
6d53bb6d7e
arm_types: Split out LocationDescriptor ( #20 )
...
This isn't really an ARM-specific type, since it's used to indicate a
Block location.
2016-09-05 11:54:09 +01:00
Mat M
858796a029
Eliminate variable shadowing warnings with MSVC ( #17 )
2016-09-04 11:30:57 +01:00
Mat M
7f9a0c3c38
Remove unnecessary explicit includes ( #16 )
2016-09-03 21:48:03 +01:00
Mat M
26db11cd71
reg_alloc: Use a strongly-typed enum for representing OpArg type ( #15 )
2016-09-03 18:30:03 +01:00
Mat M
05b189bc26
arm_types: Specialize std::hash for LocationDescriptor ( #14 )
...
Same thing, but with the benefit of working with anything that uses
std::hash by default.
2016-09-03 12:48:47 +01:00
Mat M
8c4df46580
FPSCR: Make value constructor explicit ( #13 )
...
Maintains consistency between the PSR helper.
2016-09-03 12:48:31 +01:00
Mat M
6ec651498d
arm: Add PSR helper type ( #3 )
2016-09-02 17:34:33 +01:00
Mat M
1e781d911a
reg_alloc: const correctness ( #8 )
2016-09-02 17:30:01 +01:00
MerryMage
711b3e29d3
interface: Allow ClearCache to be called at any time
2016-09-02 10:59:33 +01:00
Mat M
fb6d838bd9
dynarmic: Remove poison_memory ClearCache parameter ( #1 )
...
Unused since the switch to Xbyak
2016-09-01 09:47:09 +01:00
MerryMage
4321e829d1
callbacks: Add user_arg argument to InterpreterFallback
2016-09-01 02:00:08 +01:00
MerryMage
3b5c43b427
Optimization: Read page-table directly for memory access
2016-09-01 00:58:02 +01:00
MerryMage
57169ec093
abi: Implement ABI_PushCallerSaveRegistersAndAdjustStack and ABI_PopCallerSaveRegistersAndAdjustStack
2016-09-01 00:57:22 +01:00
MerryMage
702e181b35
backend_x64/abi: Reversing XMM list leads to incorrect ordering
2016-08-31 23:06:49 +01:00
MerryMage
b10c438e8e
jitstate: Remove code argument from ResetRSB
2016-08-31 21:57:33 +01:00
Lioncash
ea6a4e82b5
block_of_code: Make CallFunction accept function pointers only
2016-08-31 21:51:44 +01:00
Lioncash
37d64f0c86
hostloc: Simplify static_assert
2016-08-28 22:10:23 +01:00
Lioncash
f2bf795876
intrusive_list: Interface changes
...
- Remove the root pointer from iterators.
This is unnecessary, since the only way to get a valid iterator is
either from a node itself (it transiently becomes an iterator via the
underlying interface), or through the iterator interface for the list.
This should also result in better code generation, as each increment or
decrement of an iterator is now branchless.
- Remove iterator_to
This is actually a pretty dangerous function, since it would immediately
create an iterator into the list using the given item, even if it's not
actually part of the list. This was only left around due to lack of
type handling around constructors.
- Add other overloads for erase() and remove()
Now handles iterators, pointers, and references.
2016-08-28 20:56:40 +01:00
MerryMage
7912a79fa5
emit_x64: align before emitting blocks
2016-08-27 11:04:43 +01:00
MerryMage
41c8dabf0b
block_of_code: nop should probably default to a size of 1
2016-08-27 10:57:48 +01:00
MerryMage
dca3b2f079
Implement VMRS and VMSR
2016-08-26 22:47:54 +01:00
MerryMage
814348371e
emit_x64: EmitX64::Emit: block.Location() returns by value
2016-08-26 19:43:29 +01:00
MerryMage
4f6ea715b2
emit_x64: EmitX64::Emit doesn't need descriptor argument
2016-08-26 19:14:25 +01:00
Lioncash
32c24d2cb3
Use 'false' instead of '0' in asserts
2016-08-26 18:52:08 +01:00
MerryMage
ba31f43672
reg_alloc: UseDefOpArgXmm: default value for argument desired_location should be any_xmm, not any_gpr
2016-08-26 18:50:08 +01:00
MerryMage
7fedf04e79
reg_alloc: Deduplicate constants in RegAlloc::HostCall that were already defined by abi.h
2016-08-26 18:43:50 +01:00
MerryMage
59a8e14d1c
reg_alloc: Correct OpArg::setBit for Reg
2016-08-26 15:23:38 +01:00
MerryMage
065c53ebfc
emit_x64: Make ZeroIfNaN64 branchless
2016-08-26 15:23:08 +01:00
MerryMage
9901ed0f51
block_of_code: Optimize nops
2016-08-26 13:46:19 +01:00
Lioncash
0102951bdd
Convert formatting over to fmtlib
2016-08-26 13:13:19 +01:00
MerryMage
ed3a686d1d
Implement public header files
2016-08-26 00:44:50 +01:00
MerryMage
656d4f7252
emit_x64: inhibit_emission is obsolete
...
Not used anymore; unused ever since intrusive lists were introduced.
2016-08-25 23:24:16 +01:00
MerryMage
4322c0907c
microinstruction: Rename FindUseWithOpcode to GetAssociatedPseudoOperation, encapsulate associated variables
2016-08-25 21:08:47 +01:00
MerryMage
922d1fd198
Merge branch 'xbyak'
2016-08-25 16:54:48 +01:00
MerryMage
d04b9eaa81
backend_x64/block_of_code: Reset labels when ClearCache() is called
2016-08-25 16:18:18 +01:00
MerryMage
e32812cd00
Port x64 backend to xbyak
2016-08-25 16:18:17 +01:00
Lioncash
0e12fb6a56
basic_block: Move all variables behind a public interface
2016-08-25 16:14:37 +01:00
MerryMage
13908c5a58
reg_alloc: Insert braces around DEBUG_ASSERT
...
DEBUG_ASSERT becomes an empty statement in release-mode; an if statement
with an empty statement produces a compiler warning.
2016-08-25 13:09:18 +01:00