Commit graph

429 commits

Author SHA1 Message Date
Lioncash fafa845f64 emit_x64: Make GetBasicBlock() const qualified 2016-12-05 12:46:22 +00:00
Lioncash 6a16edc0fb emit_x64: Move implementations into the cpp file
Prevents needing to rebuild everything including the emitter if any
details ever change.
2016-12-05 12:46:22 +00:00
Lioncash 282029f60a emit_x64: Forward declare BlockOfCode 2016-12-05 12:46:22 +00:00
Lioncash 6898b74c78 emit_x64: Get rid of indirect includes 2016-12-05 12:46:22 +00:00
Mat M 1dc1eaa452 CMakeLists: Enable more warnings for MSVC (#58) 2016-12-05 12:45:35 +00:00
MerryMage 54d051977f emit_x64: Use movdqa instead of movaps in EmitPackedSubU8
While movaps and movdqa are behaviourly equivalent, using movaps may incur
a domain crossing penalty on some microarchitectures. This is because
movaps is an instruction in the floating-point domain while the following
instructions are in the integer domain.
2016-12-05 01:00:51 +00:00
MerryMage 52e1445f43 Implement USUB8 2016-12-05 00:29:15 +00:00
MerryMage 5c1aab1666 Implement CLZ
Includes tests
2016-12-04 22:56:33 +00:00
MerryMage 1a1646d962 Implement UADD8 2016-12-04 20:52:33 +00:00
MerryMage 7cad6949e7 IR: Implement new pseudo-operation GetGEFromOp 2016-12-04 20:52:06 +00:00
MerryMage 370f654590 fuzz_arm: Add tests for parallel add/subtract (modulo) 2016-12-04 20:51:12 +00:00
MerryMage 25f21b5371 emit_x64: Inline nzcv computation into EmitFPCompare32 and EmitFPCompare64 2016-12-04 11:43:31 +00:00
MerryMage 52fdec5892 CMakeLists: Add support for LLVM on Windows
The LLVM project provides a clang-based MSVC compatible toolset for
Microsoft Visual Studio. This suite is sometimes refered to as "clang-cl".

This patch adds a few compiler flags to support this toolset.
2016-12-03 16:12:51 +00:00
MerryMage cede5e442a emit_x64: Use xorps/xorpd when argument to TransferToFP32/TransferToFP64 is an immediate zero 2016-12-03 11:41:10 +00:00
MerryMage e166965f3e Implement VCMP 2016-12-03 11:41:09 +00:00
MerryMage f2fe376fc6 Support 64-bit immediates 2016-12-03 11:29:50 +00:00
MerryMage ff00b8c555 Document register allocator and return stack buffer optimization 2016-12-02 20:09:20 +00:00
Mat M 95f34c683c reg_alloc: Remove unnecessary breaks after returns (#54) 2016-12-02 19:14:44 +00:00
MerryMage dc9707ef55 externals: Update xbyak to 5.32 2016-12-01 10:27:20 +00:00
Mat M de1f831d79 microinstruction: Make use_count private (#53)
Makes the operation a part of the direct interface.
2016-11-30 21:51:06 +00:00
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
Sebastian Valle 11ae8d1ffa Added disassembler support for the ARM parallel add/subtract (modulo arithmetic) instructions. (#50) 2016-11-26 17:58:09 +00:00
Sebastian Valle ed71e31cea Added disassembler support for the ARM parallel and saturated instructions (#44) 2016-11-26 17:49:46 +00:00
Sebastian Valle cda25c12b3 Added tests for the ARM parallel halving instructions. (#49) 2016-11-26 17:24:57 +00:00
MerryMage c0c1bb1094 Implemented UHADD16 2016-11-26 11:28:20 +00:00
Mat M 4f7dc81492 mp: Fix static_assert condition (#46)
Not an issue currently, but this would have prevented type inspection on
the last function parameter.
2016-11-25 22:09:45 +00:00
Yuri Kunde Schlesner 700561a69a CMake: Add option to disable use of bundled fmtlib 2016-11-25 20:47:04 +00:00
Yuri Kunde Schlesner 9ec51f74bd libfmt: Update version to current master 2016-11-25 20:47:04 +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
Sebastian Valle f32921d493 ARM: Implemented UXTB16. (#42)
It passes tests.
2016-11-24 08:21:12 +00:00
Sebastian Valle 32615d0eff Implemented the PKHTB and PKHBT instructions with tests. (#40) 2016-11-23 21:45:18 +00:00
MerryMage 780ff8e00e status_register_access: SEL: Use GetGEFlags 2016-11-23 19:47:35 +00:00
MerryMage b6f7b8babd ir: Implement GetGEFlags, SetGEFlags 2016-11-23 19:44:27 +00:00
MerryMage e7d02a5439 get_set_elimination_pass: Refactor CPSR related eliminations 2016-11-23 18:42:13 +00:00
MerryMage 4c817b9bd5 travis: No longer necessary to install latest cmake from homebrew on macOS 2016-11-23 18:24:06 +00:00
Sebastian Valle d589c63107 Implemented the ARM SEL instruction, with tests. (#39)
The test for this instruction is very peculiar. As the instruction's behavior depends on the value of the CPSR, we generate a MSR instruction after each SEL instruction to change the CPSR.
2016-11-23 18:14:07 +00:00
MerryMage 6520c7537e travis: brew unlink is no longer necessary
xcode7.3 was updated with a newer version of cmake preinstalled
2016-09-21 17:53:28 +01:00
Mat M 65dcf45ca6 FPSCR: Mask away reserved bits (#34) 2016-09-21 17:51:13 +01:00
MerryMage 792f2bfd94 translate_arm: Remove unused method ArmTranslatorVisitor::LinkToNextInstruction 2016-09-21 14:07:53 +01:00
Mat M f75acd6cfb decoder: Generify the matcher interface (#33)
Gets rid of a bit of duplication while remaining compatible
with the current interfaces in place.
2016-09-17 09:48:18 +01:00
Mat M 943487ecee disassembler: Provide includes to function declarations (#32) 2016-09-14 23:03:09 +01:00
Merry b6c59d55a8 Update README.md 2016-09-13 14:54:22 +01:00
MerryMage 2c1818ece9 CMakeLists: Downgrade -msse4.1 to -msse3.
Virtually everyone supports SSE3 except for first-generation devices.
2016-09-11 16:21:35 +01:00
Mat M 72897b5def types: Provide ostream operator<< overloads where applicable (#30) 2016-09-07 14:21:17 +01:00
Mat M b41de890fb memory_pool: Deduplicate slab allocation code (#28) 2016-09-07 13:20:42 +01:00
Merry d646c3119d Merge pull request #29 from lioncash/list
intrusive_list: Minor changes
2016-09-07 12:10:05 +01:00