2094 Commits

Author SHA1 Message Date
Lioncash
d079a4812c
A64/translate/impl: Mark DecodeBitMasks and AdvSIMDExpandImm as static
These don't rely on instance state to perform their behavior. They're
just helper functions.
2019-05-24 02:29:41 -04:00
Lioncash
4dc39252fd
x64/exception_handler_windows: Join namespace declaration
Uses a nested namespace declaration like the rest of the codebase.
2019-05-24 02:18:36 -04:00
Lioncash
2f09577dbf
a32_interface: Remove duplicated documentation comments
These already exist in the header, so these ones can be removed.
2019-05-24 02:15:51 -04:00
Lioncash
d01ec837d2
frontend/A32/types: Remove redundant std::string initializer
std::string initializes to empty by default. While we're at it, brace a
lone unbraced if statement.
2019-05-24 02:05:19 -04:00
Lioncash
31754c6918
ir_opt/a64_get_set_elimination_pass: Remove redundant return
This lambda function has a void return type, so we don't need to
explicitly return at the end of it.
2019-05-24 02:03:28 -04:00
Lioncash
76ca184afc
General: Make parameter names from declarations and implementations consistent
Most of the time when this occurs, it's a bug. Thankfully this isn't the
case. However, we can resolve these cases to make the codebase more
consistent.
2019-05-24 01:59:08 -04:00
Lioncash
c6b321d31c
A32/translate/translate: Add missing doxygen parameter string 2019-05-24 01:48:00 -04:00
Lioncash
2bc8a095dd
General: Correct typos is code comments 2019-05-24 01:37:03 -04:00
Lioncash
268d08511e
a32_interface: std::move UserConfig where applicable
UserConfig instances contain up to 16 std::shared_ptr<Coprocessor>
instances. We can std::move here to avoid performing 16 redundant atomic
reference increment and decrement operations.

Mostly inconsequential on x64, but we may as well signify intent.
2019-05-23 22:09:16 -04:00
Lioncash
9100696696
ir/basic_block: std::move Terminal within SetTerminal and ReplaceTerminal
A terminal isn't a trivial type (and boost::variant is allowed to heap
allocate), so we can std::move it here to avoid a redundant copy.
2019-05-23 22:05:45 -04:00
Lioncash
72f863a223
ir/terminal: std::move constructor parameters where applicable
Allows the compiler to choose the most suitable code in this scenario,
given a Terminal isn't a trivial type.
2019-05-23 22:02:32 -04:00
Lioncash
1d65e3a521
a32_interface: Default destructor in the cpp file
Makes it more consistent with code throughout the codebase.
2019-05-23 21:56:24 -04:00
Lioncash
a178031d6c
General: Remove unnecessary includes
Removes unnecessary header dependencies that have accumulated over time
as changes have been made. Lessens the amount of files that need to be
rebuilt when the headers change.
2019-05-23 21:43:10 -04:00
Lioncash
884d759eba
A32/coprocessor: Remove lingering boost mention in documentation comment
This should have been changed to mention std::monostate, but was
overlooked during the transition to standardized facilities.
2019-05-18 15:10:42 -04:00
Lioncash
7fe1a40bf4
common/cast_util: Declare BitCast and BitCastPointee with the noexcept specifier
std::bit_cast is also defined with the noexcept specifier, so we can do
the same here to match up with it and stay similar with the standard
library.
2019-05-18 15:06:27 -04:00
Lioncash
0765f0ce27
frontend/A32/ir_emitter: Remove unnecessary includes
std::initializer_list isn't used anywhere in here, and we can just
forward declare the CoprocReg enum to avoid needing to include the
header.
2019-05-18 14:31:31 -04:00
Lioncash
07e29a9f82
A32/A64: Make public header inclusions consistent
For all public header inclusions, we use the <> form of including them
as opposed to "", which we typically use for internal headers.
2019-05-18 14:10:39 -04:00
Lioncash
6caeadbe42
A32: Make includes consistent
Normalizes includes to be relative to the project root, like the rest of
the includes in the project.
2019-05-18 14:06:38 -04:00
Lioncash
5e6568dffa
A64/fuzz_with_unicorn: Avoid repeated unnecessary library calls in RunTestInstance()
Repeatedly retrieving the vectors and registers from unicorn involves
copying the entire set of registers and vectors by value instead of
simply retrieving a reference to them. Instead, we can just do the work
once and print out the values.

While we're at it, also make our bracing consistent.
2019-05-17 14:08:26 -04:00
MerryMage
3d2c511928 travis: Test on GCC 8 2019-05-08 22:41:01 +01:00
MerryMage
9f1233a236 CMakeLists: Define FMT_USE_USER_DEFINED_LITERALS=0
This disable a fmtlib feature that depends on a non-standard feature
for its implementation.
2019-05-08 22:18:56 +01:00
Lioncash
2683a9a3e3
Revert "CMakeLists: Handle DYNARMIC_NO_BUNDLED_FMT in relation to export()"
I was being silly. This isn't required.

This reverts commit 00b79cbb72c61744470e0aa1a96b673702b33931.
2019-05-07 03:17:43 -04:00
Lioncash
00b79cbb72
CMakeLists: Handle DYNARMIC_NO_BUNDLED_FMT in relation to export()
This is pretty gross, but until DYNARMIC_NO_BUNDLED_FMT is eliminated,
this fixes the use of it in existing libraries or applications making
use of dynarmic.
2019-05-06 14:29:36 -04:00
MerryMage
11fab29834 A32/translate_thumb: Split off implementation into thumb16 and thumb32 2019-05-06 17:48:27 +01:00
MerryMage
8434f748e4 A32/translate: Rename translate_arm directory to impl
Mirror what the A64 frontend does.
2019-05-06 17:31:00 +01:00
MerryMage
3af0bdc381 Add .gitignore 2019-05-06 12:10:25 +01:00
MerryMage
69c7e77953 travis: Rename test-a64 to test-with-unicorn
Also remove [a64] filter so that the A32 frontend is exercised as well.
2019-05-06 00:49:01 +01:00
MerryMage
291b237f96 A32/location_descriptor: Add CPSR.IT to A32::LocationDescriptor 2019-05-06 00:28:45 +01:00
MerryMage
bacabcd39c PSR: Use Common::ModifyBit{,s} 2019-05-05 23:50:34 +01:00
MerryMage
94632525e0 A32: Add ITState 2019-05-05 23:50:31 +01:00
MerryMage
b6e8297e36 a32_jitstate: Optimize runtime location descriptor calculation
Calculation is now one unaligned 64-bit load.
2019-05-05 23:24:57 +01:00
MerryMage
205e60273c a32_jitstate: Remove fpsr_idc
We do not really have accurate FPSR state in any case.
2019-05-05 23:19:08 +01:00
MerryMage
e5e8036917 {a32,a64}_jitstate: Rename CPSR_* to cpsr_* 2019-05-05 19:49:54 +01:00
MerryMage
ddd5699a83 a32_jitstate: Remove old_FPSCR 2019-05-05 19:47:38 +01:00
MerryMage
0aae9ea07c a32_jitstate: Rename FPSCR_nzcv to fpsr_nzcv 2019-05-05 19:46:57 +01:00
MerryMage
8dc9aec9db a32_jitstate: Rename FPSCR_mode to fpcr_mode 2019-05-05 19:45:45 +01:00
MerryMage
0fb12df549 {a32,a64}_jitstate: Rename FPSCR_IDC to fpsr_idc 2019-05-05 19:44:12 +01:00
MerryMage
33715d2a97 {a32,a64}_jitstate: Remove FPSCR_UFC 2019-05-05 19:42:17 +01:00
MerryMage
0f20a56fe9 a32_jitstate: Enable SSE FTZ and DAZ 2019-05-05 19:40:14 +01:00
MerryMage
852591ff37 a32_jitstate: Remove exception trap enables from FPSCR_MODE_MASK
We don't currently use this for anything (we do not currently trap
floating point exceptions).

This frees these bits up for other purposes.
2019-05-05 19:38:55 +01:00
Merry
c3d20e4ebf
Merge pull request #500 from lioncash/cbz
A32: Implement Thumb-1's CBZ/CBNZ instructions
2019-05-05 18:48:13 +01:00
MerryMage
0cca95d9eb tests: Fix Windows build when DYNARMIC_TESTS_USE_UNICORN is enabled 2019-05-05 18:43:58 +01:00
Merry
766f368f7b
Merge pull request #498 from lioncash/ahp
A32/location_descriptor: Add AHP bit to the FPSCR mask
2019-05-05 11:50:37 +01:00
Lioncash
4a7d62d528
common/fp/info: Make formatting of FPInfo struct member functions consistent
Orgranizes the functions to all be consistent with the half-precision
specialization.
2019-05-04 21:24:18 -04:00
Lioncash
3991361352
common/fp/util: Make ProcessNaN utility functions constexpr
Nothing in particular prevents these from being constexpr. Do so to make
them consistent with the bulk of other functions in this header that are
constexpr.
2019-05-04 21:20:43 -04:00
Lioncash
4cfd1f28cc
common/fp/op/FPNeg: Make FPNeg constexpr
Negation in (standard IEEE) floating-point is simply flipping the sign-bit, so this
operation will never be more complex than what is presented here, making
constexpr a reasonable allowance.
2019-05-04 21:07:49 -04:00
Lioncash
75fd25b2ec
CMakeLists: Add FPNeg.h to the library target sources
Ensures that the header shows up in IDE generated projects.
2019-05-04 21:05:51 -04:00
Lioncash
94717dc11a
general: Remove trailing spaces
General code-related cleanup. Gets rid of trailing spaces in the
codebase.
2019-05-04 21:03:34 -04:00
Lioncash
0085c21321
x64/reg_alloc: Remove reference qualifier to variable in GetArgumentInfo()
The result of GetArg() is returned by value, so this is essentially
still a copy. While the previous code *is* valid, this communicates what
is actually happening a little more explicitly.
2019-05-04 19:15:19 -04:00
Lioncash
f8814e7e05
ir_opt/verification_pass: Add include for std::puts
Ensures that the header dependency is always satisfied directly, and not
through other project headers. While we're at it, we can qualify the
call with the std:: namespace.
2019-05-04 19:10:05 -04:00