815 Commits

Author SHA1 Message Date
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
355d65ec0d CMakeLists: Default to a Release build 2017-11-28 20:08:45 +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
c1dd87aeeb fuzz_arm: Test SEL alongside packed instructions 2017-11-25 17:28:51 +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
3e4b02dd40 skyeye: Correct assumption that VFP_REG_ZERO will always be zero 2017-11-22 17:32:05 +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
MerryMage
20b1ac49b1 Merge branch 'subtree'
Remove submodules and use subtrees instead.

The advantage of subtrees is that they would not decay due to link rot
like submodules might.
2017-11-17 11:43:25 +00:00
MerryMage
cc53307857 externals: Add xbyak subtree
Merge commit 'dc792fdb55013abf9ab3913608fe1a7c1c3fe5f3' as 'externals/xbyak'
2017-11-15 20:53:46 +00:00
MerryMage
dc792fdb55 Squashed 'externals/xbyak/' content from commit d512551e
git-subtree-dir: externals/xbyak
git-subtree-split: d512551e914737300ba35f3c049d1b40effbe76d
2017-11-15 20:53:40 +00:00
MerryMage
4b31cb4968 externals: Removed xbyak submodule 2017-11-15 20:51:52 +00:00
MerryMage
f1fe85702d externals: Add fmt subtree
Merge commit '15a8975273ff2ef472939aab4a39a6c4bdc1898d' as 'externals/fmt'
2017-11-15 20:50:35 +00:00
MerryMage
15a8975273 Squashed 'externals/fmt/' content from commit 3983438
git-subtree-dir: externals/fmt
git-subtree-split: 398343897f98b88ade80bbebdcbe82a36c65a980
2017-11-15 20:49:14 +00:00
MerryMage
417dbe1248 externals: Removed fmt submodule 2017-11-15 20:47:41 +00:00
Mat M
185f233bf8 Common: Delete Pool's copy constructor and copy/move assignment operators (#117)
The language defines a copy constructor as:

TypeName(const TypeName&)

so this was just deleting a constructor variant that would catch most cases of attempted copies.
2017-11-12 08:52:34 +00:00
Mat M
c53e0a8768 emit_x64: Amend doxygen parameters for InvalidateCacheRange() (#116) 2017-11-12 08:08:23 +00:00
Mat M
c03aee63e1 externals: Update catch to 2.0.1 (#115)
Keeps the unit testing library up to date.
2017-11-11 05:55:07 +00:00
MerryMage
d3fb603287 block_of_code: Add vzeroupper instructions where AVX-SSE transitions may occur 2017-11-02 20:08:26 +00:00
MerryMage
7b232ea845 block_of_code: BlockOfCode should provide cpu info 2017-11-02 20:06:36 +00:00
yesfish
ed4964e892 reg_alloc: Improve performance of HostLocInfo (#112)
This commit changes the type of HostLocInfo::values from std::vector<Inst*> to std::forward_list<Inst*>.
2017-10-19 02:41:49 +01:00
MerryMage
148c01e08f interface_x64: Remove is_executing assert from HaltExecution
In multithreaded code this can be triggered due to a race.
2017-10-14 23:35:01 +01:00
MerryMage
f6cf265bc5 block_of_code: BlockOfCode::ABI_* should be const 2017-09-29 01:35:24 +01:00
MerryMage
29471be317 Standardize location of storage-class specifiers: Place at beginning of declarations
Justification: C99 specifies that doing otherwise is an obsolescent feature.
2017-09-29 01:23:45 +01:00
MerryMage
b992e5f8ec Ranged cache invalidation
* Fix clearing code block on a partial invalidation
* Remove unnecessary use of boost::variant
* Code cleanup
2017-09-11 00:11:05 +01:00
Lioncash
a362bffdd4 externals: Update catch to 1.10.0
Updates from 1.9.4.
2017-08-28 09:52:59 +01:00
Lioncash
80477b5a67 externals: update fmt to 4.0 2017-08-27 21:43:21 +01:00
MerryMage
40d0aa505c externals: Update Xbyak to v5.52
Alignment bug fixed
2017-08-18 13:47:22 +01:00
MerryMage
568b52d4ba externals: Update Xbyak to v5.51
Xbyak now supports multi-byte nops
2017-08-17 21:34:54 +01:00
MerryMage
1613846ab0 reg_alloc: Handle XMM registers in LoadImmediate 2017-08-16 23:11:05 +01:00
MerryMage
993e142c6b disassembler: Fix RegList 2017-08-05 01:57:29 +01:00
MerryMage
6197bde0fc disassembler_arm: Fix disassembly of LDRH (reg) 2017-07-30 18:45:55 +01:00