Lioncash
557a01a787
common/fp/op: Add soft-float implementation of FPCompareEQ
...
This will be used to implement the half-precision floating-point
variants of FCMEQ in following changes.
2020-04-22 21:04:22 +01:00
Lioncash
4f47861669
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.
2020-04-22 21:04:22 +01:00
Lioncash
23f56bdb67
x64/exception_handler_windows: Join namespace declaration
...
Uses a nested namespace declaration like the rest of the codebase.
2020-04-22 21:04:22 +01:00
Lioncash
ccf923305c
a32_interface: Remove duplicated documentation comments
...
These already exist in the header, so these ones can be removed.
2020-04-22 21:04:22 +01:00
Lioncash
b57ed8917a
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.
2020-04-22 21:04:22 +01:00
Lioncash
25b4e463d3
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.
2020-04-22 21:04:22 +01:00
Lioncash
182ceb2807
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.
2020-04-22 21:04:22 +01:00
Lioncash
b301fcd520
A32/translate/translate: Add missing doxygen parameter string
2020-04-22 21:04:22 +01:00
Lioncash
6b9bf7868a
General: Correct typos is code comments
2020-04-22 21:04:22 +01:00
Lioncash
6187de7ca7
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.
2020-04-22 21:04:22 +01:00
Lioncash
b79ce71b0f
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.
2020-04-22 21:04:22 +01:00
Lioncash
63eff4e7cc
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.
2020-04-22 21:04:22 +01:00
Lioncash
b13b6610b5
a32_interface: Default destructor in the cpp file
...
Makes it more consistent with code throughout the codebase.
2020-04-22 21:04:22 +01:00
Lioncash
d9d59bc1f4
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.
2020-04-22 21:04:22 +01:00
Lioncash
9365487797
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.
2020-04-22 21:04:22 +01:00
Lioncash
bfa8035414
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.
2020-04-22 21:04:22 +01:00
Lioncash
fb7d33830c
A32: Make includes consistent
...
Normalizes includes to be relative to the project root, like the rest of
the includes in the project.
2020-04-22 21:04:22 +01:00
MerryMage
3513ed1c60
CMakeLists: Define FMT_USE_USER_DEFINED_LITERALS=0
...
This disable a fmtlib feature that depends on a non-standard feature
for its implementation.
2020-04-22 21:04:22 +01:00
Lioncash
44b61212e5
Revert "CMakeLists: Handle DYNARMIC_NO_BUNDLED_FMT in relation to export()"
...
I was being silly. This isn't required.
This reverts commit 00b79cbb72c61744470e0aa1a96b673702b33931.
2020-04-22 21:04:22 +01:00
Lioncash
acd7ac5ed3
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.
2020-04-22 21:04:22 +01:00
MerryMage
7d20f3b861
A32/translate_thumb: Split off implementation into thumb16 and thumb32
2020-04-22 21:04:22 +01:00
MerryMage
e639aa1583
A32/translate: Rename translate_arm directory to impl
...
Mirror what the A64 frontend does.
2020-04-22 21:04:22 +01:00
MerryMage
5f8eb7c51c
A32/location_descriptor: Add CPSR.IT to A32::LocationDescriptor
2020-04-22 21:04:22 +01:00
MerryMage
13f65f55eb
PSR: Use Common::ModifyBit{,s}
2020-04-22 21:04:22 +01:00
MerryMage
74633301c1
A32: Add ITState
2020-04-22 21:04:22 +01:00
MerryMage
6e2cd35e4f
a32_jitstate: Optimize runtime location descriptor calculation
...
Calculation is now one unaligned 64-bit load.
2020-04-22 21:04:22 +01:00
MerryMage
0de3993373
a32_jitstate: Remove fpsr_idc
...
We do not really have accurate FPSR state in any case.
2020-04-22 21:04:22 +01:00
MerryMage
6f49c0ef8e
{a32,a64}_jitstate: Rename CPSR_* to cpsr_*
2020-04-22 21:04:22 +01:00
MerryMage
8cd7837839
a32_jitstate: Remove old_FPSCR
2020-04-22 21:04:22 +01:00
MerryMage
b3bb544bca
a32_jitstate: Rename FPSCR_nzcv to fpsr_nzcv
2020-04-22 21:04:22 +01:00
MerryMage
76f986979d
a32_jitstate: Rename FPSCR_mode to fpcr_mode
2020-04-22 21:04:22 +01:00
MerryMage
49fca15f90
{a32,a64}_jitstate: Rename FPSCR_IDC to fpsr_idc
2020-04-22 21:04:21 +01:00
MerryMage
622c02f537
{a32,a64}_jitstate: Remove FPSCR_UFC
2020-04-22 21:04:21 +01:00
MerryMage
366d63f4b4
a32_jitstate: Enable SSE FTZ and DAZ
2020-04-22 21:04:21 +01:00
MerryMage
f178562ee7
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.
2020-04-22 21:04:21 +01:00
Merry
fd6222f0a1
Merge pull request #500 from lioncash/cbz
...
A32: Implement Thumb-1's CBZ/CBNZ instructions
2020-04-22 21:04:21 +01:00
Merry
bab4e29075
Merge pull request #498 from lioncash/ahp
...
A32/location_descriptor: Add AHP bit to the FPSCR mask
2020-04-22 21:04:21 +01:00
Lioncash
2d695e3c7c
common/fp/info: Make formatting of FPInfo struct member functions consistent
...
Orgranizes the functions to all be consistent with the half-precision
specialization.
2020-04-22 21:04:21 +01:00
Lioncash
05b330906e
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.
2020-04-22 21:04:21 +01:00
Lioncash
6b9a40bdc4
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.
2020-04-22 21:04:21 +01:00
Lioncash
ef95e0fa7d
CMakeLists: Add FPNeg.h to the library target sources
...
Ensures that the header shows up in IDE generated projects.
2020-04-22 21:04:21 +01:00
Lioncash
87083af733
general: Remove trailing spaces
...
General code-related cleanup. Gets rid of trailing spaces in the
codebase.
2020-04-22 21:04:21 +01:00
Lioncash
fdbafbc1ae
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.
2020-04-22 21:04:20 +01:00
Lioncash
1f6878fb46
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.
2020-04-22 21:03:38 +01:00
Lioncash
fc9c59d056
ir_opt/verification_pass: Eliminate redundant GetArg()
...
Given the same argument is used inside the condition's body if it's
true, we can just utilize the local to cut out a GetArg() operation.
Avoids redundant internal assertion checking.
2020-04-22 21:03:35 +01:00
Lioncash
03e6899fd7
A32: Implement Thumb-1's CBZ/CBNZ instructions
...
Introduced in ARMv6T2, this allows for short forward branches.
2020-04-22 21:02:47 +01:00
Lioncash
d02a4e6fc9
A32/location_descriptor: Add AHP bit to the FPSCR mask
...
Ensures the alternate half-precision state is preserved within the
location descriptors, which will be necessary when implementing the
half-precision extensions for VFP and NEON.
2020-04-22 21:02:47 +01:00
Merry
f4990a5f6b
Merge pull request #499 from lioncash/movw
...
A32: Implement ARM-mode MOVW
2020-04-22 21:02:47 +01:00
Lioncash
bd755ae494
frontend/ir/ir_emitter: Add A32 equivalent to A64's SetCheckBit
...
This will be used in a subsequent change to implement ARMv6T2's CBZ/CBNZ
Thumb-1 instructions.
2020-04-22 21:02:47 +01:00
Lioncash
c6e1fd1416
a64_emit_x64: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2020-04-22 21:02:47 +01:00