MerryMage
058f7b5de6
emit_x64: Make EmitTerminal type-safe
...
Avoid the use of boost::variant::which, which tends to produce code which
is not verifiable at compile-time.
2017-02-16 19:40:51 +00:00
MerryMage
e197b10b96
common: Introduce utility function VisitVariant
...
VisitVariant allows one to use a generic lambda to visit a boost::variant.
This is necessary because boost::visit_variant requires the visitor type
to provide a return type.
2017-02-16 19:30:56 +00:00
MerryMage
5a20a37d3f
arm/fpscr: Correct Stride implementation
2017-02-11 12:13:57 +00:00
MerryMage
033e8b9b1e
vfp: Rename variables a, b, c to more sensible names
2017-02-06 21:14:36 +00:00
MerryMage
2af39dfaa8
emit_x64: Make reg_alloc a local variable
...
reg_alloc contains state that is only valid on a per-block basis, so there
is no reason for it to be a member variable.
2017-02-04 09:29:35 +00:00
MerryMage
a0e9417912
ir_opt: Initial constant propagation pass implementation
2017-01-30 21:49:46 +00:00
MerryMage
2447f2f360
callbacks: Factorize memory callbacks into inner structure
2017-01-30 21:42:51 +00:00
MerryMage
642ccb0f66
ir/value: Support U16 immediates
2017-01-29 22:58:11 +00:00
MerryMage
5f7ffe0d0b
microinstruction: Implement Inst::AreAllArgsImmediates
2017-01-29 22:56:59 +00:00
MerryMage
22804dc6a5
microinstruction: Arguments of Inst::Use and Inst::UndoUse should be const
2017-01-29 22:53:46 +00:00
MerryMage
1d4446cad5
microinstruction: Removed unnecessary reference from argument of Inst::ReplaceUsesWith
2017-01-29 22:52:33 +00:00
MerryMage
3e0e339d98
bit_util: Remove unnecessary include
2017-01-09 22:19:51 +00:00
MerryMage
9ecdd32b84
coprocessor: Implement fast-path for Coproc{Send,Get}{OneWord,TwoWords}
...
Allow coprocessor interface to provide pointers instead of a callback.
This allows for a fastpath when all that is required is to read or write a
value and no other action needs to be taken.
2017-01-08 14:56:06 +00:00
MerryMage
e3bc7d039f
Implement CDP, LDC, MCR, MCRR, MRC, MRRC, STC
2017-01-08 14:56:06 +00:00
MerryMage
48693eb6ff
Implement coprocessor-related microinstructions
...
* CoprocInternalOperation
* CoprocSendOneWord
* CoprocSendTwoWords
* CoprocGetOneWord
* CoprocGetTwoWords
* CoprocLoadWords
* CoprocStoreWords
2017-01-08 14:56:06 +00:00
MerryMage
b3ae57619d
types: Formatting for CoprogReg
2017-01-08 14:56:06 +00:00
MerryMage
d8a37e287c
IR: Add IR type CoprocInfo
2017-01-08 14:56:06 +00:00
MerryMage
890b2f75ad
callbacks: Add coprocessor interface
2017-01-08 14:56:06 +00:00
MerryMage
1efd3a764d
IR: Remove unused microinstructions NegateLowWord and NegateHighWord
2017-01-05 20:16:39 +00:00
Fernando Sahmkow
70f4235ee9
Implement UXTAB16 ( #78 )
2016-12-29 12:15:18 +00:00
MerryMage
0d1fa85402
bit_util: Bit<T>(size_t, const T) cannot be constexpr
...
Compound statements are not permitted in constexpr functions in C++14
2016-12-29 10:08:35 +00:00
FernandoS27
d5610eb26c
Implement UHASX, UHSAX, SHASX and SHSAX ( #75 )
2016-12-28 21:32:22 +00:00
MerryMage
e9df248d56
decoder_detail: Support const member functions
2016-12-23 11:33:40 +00:00
MerryMage
163b67bf1f
mp: Add support for const member function pointers to FunctionInfo
2016-12-23 11:32:12 +00:00
MerryMage
b1bad4b5cc
decoder_detail: static_assert member function is from visitor class
...
Improves readability of compiler errors.
2016-12-23 11:10:02 +00:00
MerryMage
c7e5216473
emit_x64: EraseInstruction now also invalidates the instruction
...
There is now no longer a need to call DecrementRemainingUses on the parent
instruction.
2016-12-22 18:43:11 +00:00
MerryMage
c78f153ddb
decoder/arm: Sort decoders according to number of bits in mask
2016-12-22 15:25:38 +00:00
MerryMage
cb38c94b58
decoder/arm: Fix decoding of RFE
2016-12-22 15:25:07 +00:00
MerryMage
7e77ee7fd6
decoder/arm: Fix decoding of MCR2
2016-12-22 15:11:47 +00:00
Fernando Sahmkow
677f62dd6f
Implement SHSUB8 and SHSUB16 ( #74 )
...
* Implement IR operations PackedHalvingSubS8 and PackedHalvingSubS16
2016-12-22 12:02:24 +00:00
MerryMage
967f3cf7e1
Implement CPS (Thumb)
...
* Since currently only User mode is emulated, CPS is a NOP.
2016-12-21 22:44:27 +00:00
MerryMage
c764a2b889
Implement MUL (T1)
2016-12-21 22:44:14 +00:00
MerryMage
36082087de
callbacks: Read code using MemoryReadCode callback
2016-12-21 21:39:14 +00:00
MerryMage
56ea2386d3
saturated: Implement SSAT and USAT
2016-12-21 19:51:25 +00:00
MerryMage
6a269a6ebd
IR: Add microinstructions UnsignedSaturation and SignedSaturation
2016-12-21 19:51:25 +00:00
MerryMage
b23b524b03
bit_util: Add SignExtend implementation with runtime bit_count argument
2016-12-21 19:51:25 +00:00
MerryMage
02b2ab7581
emit_x64: Pass tmp to ExtractMostSignificantBitFromPackedBytes in EmitPackedAddU8
2016-12-20 22:07:51 +00:00
MerryMage
097f6a83da
emit_x64: Document ExtractAndDuplicateMostSignificantBitFromPackedWords
2016-12-20 22:06:14 +00:00
MerryMage
03f168094d
emit_x64: Document ExtractMostSignificantBitFromPackedBytes
2016-12-20 22:05:51 +00:00
FernandoS27
8919265d2c
Implement SADD8, SADD16, SSUB8, SSUB16, USUB16
2016-12-20 21:52:38 +00:00
FernandoS27
3f6ecfe245
Implemented USAD8 and USADA8
2016-12-20 21:52:38 +00:00
MerryMage
b1d3e7aae9
emit_x64: Refactor patching code
...
* Only have a single std::unordered_map for patching information
* Factor patch emitters into own functions
* Implement EmitX64::Unpatch
2016-12-20 14:06:55 +00:00
MerryMage
cc58666c06
CMakeLists: Use target_compile_options intead of add_compile_options
2016-12-19 00:48:25 +00:00
MerryMage
74a95ea51e
block_of_code: Rename alloc to AllocateFromCodeSpace
2016-12-18 23:43:48 +00:00
MerryMage
96e46ba6b5
Implement QADD, QSUB, QDADD, QDSUB
2016-12-15 22:34:29 +00:00
MerryMage
b178ab3bec
Replace (void)(...); idiom with UNUSED macro
2016-12-15 21:36:05 +00:00
MerryMage
276873bf70
Wrap #pragma warning with #ifdef _MSC_VER .. #endif
2016-12-15 21:36:02 +00:00
MerryMage
0e8b626d87
CMakeLists: Globally disable MSVC warning C4592
...
C4592: Symbol will be dynamically initialized (implementation limitation)
2016-12-15 21:09:55 +00:00
MerryMage
91e851a991
CMakeLists: Enable /W4 on MSVC
2016-12-15 20:52:23 +00:00
MerryMage
63caed7b09
emit_x64: Remove argument names of unused arguments
2016-12-15 20:52:22 +00:00