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
Lioncash
bd0ed7ee79
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.
2019-05-04 19:07:45 -04:00
Merry
161f0ba2fa
Merge pull request #499 from lioncash/movw
...
A32: Implement ARM-mode MOVW
2019-05-04 16:53:01 +01:00
Merry
ff75a409b6
Merge pull request #497 from lioncash/boost
...
A32/coprocessor: Remove boost from public interface
2019-05-04 16:52:24 +01:00
Lioncash
f0f9fd1065
CMakeLists: Specify the /volatile flag with standard-conforming semantics
...
Makes Windows builds more standard-compliant. Given we currently make no
use of volatile, and the libraries we currently use don't use it any
meaningful way, this is safe to specify without worrying.
2019-05-04 00:46:25 -04:00
Lioncash
6f7fbb31a1
CMakeLists: Add /Zc:externConstexpr compilation flag
...
Improves standard conformance on Windows builds.
2019-05-04 00:40:12 -04:00
Lioncash
c65ea6a92d
CMakeLists: Remove setting of CMAKE_WARN_DEPRECATED
...
CMake documentation states:
"If this variable is not set, CMake behaves as if it were set to TRUE."
So this isn't needed, as it's the default behavior.
2019-05-04 00:17:29 -04:00
Lioncash
d56ed7e513
CMakeLists: Turn generic target path into an error
...
There's currently no way this path can occur and result in any
functioning executable. The recompiler backends are platform-specific.
If those platforms aren't available, then it's quite literally
impossible to use this library for anything meaningful. Instead of
defining a generic architecture and continuing on, notify the developer
that their platform is not currently supported.
2019-05-04 00:10:46 -04:00
Lioncash
13c3f25ac5
CMakeLists: Remove detection of 32-bit platforms
...
We currently have no plans to add 32-bit host architecture support, so
we don't even need to check for these platforms.
2019-05-04 00:04:15 -04:00
Lioncash
2f8167a3e0
block_of_code: Use variable template variants of type traits
...
Now all type traits are using the variable template variants where
applicable.
2019-05-03 22:55:50 -04:00
Lioncash
9d9ba745db
dynarmic_tests: Use variable template equivalents of type traits where applicable
...
Same thing, same readability, less writing.
2019-05-03 22:44:38 -04:00
Lioncash
835f490765
frontend/decoder/decoder_detail: Replace std::is_same, with std::is_same_v
...
Same thing, same readability, less characters.
2019-05-03 22:41:53 -04:00
Lioncash
fb95482a85
A32: Implement Thumb-1's CBZ/CBNZ instructions
...
Introduced in ARMv6T2, this allows for short forward branches.
2019-05-03 19:29:08 -04:00
Lioncash
80320bfed0
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.
2019-05-03 19:13:21 -04:00
Lioncash
17f6494432
A32: Implement ARM-mode MOVW
...
Introduced to the ISA in ARMv6T2
2019-05-03 18:00:54 -04:00
Lioncash
19f21d0be2
travis: Bump macOS deployment version to 10.14
...
Some of std::variant's functions are only available in 10.14 and later.
2019-05-03 16:36:58 -04:00
Merry
c3b92ed7ee
Merge pull request #496 from lioncash/thumb-hint
...
A32: Implement Thumb-1 hint instructions
2019-05-03 21:22:37 +01:00
Lioncash
64ffdb6d14
A32: Implement Thumb-1 variant of SEVL
...
While we're at it, also add the Thumb-2 encoding to the encoding table
to make sure it isn't forgotten about in the future.
2019-05-03 16:16:07 -04:00
Lioncash
ae7aa581b8
A32: Implement the ARM-mode variant of SEVL
2019-05-03 16:16:07 -04:00
Lioncash
245d41ac93
A32: Implement Thumb-1 variant of YIELD
2019-05-03 16:15:11 -04:00
Lioncash
293d5355b6
A32: Implement Thumb-1 variant of WFI
2019-05-03 16:15:11 -04:00
Lioncash
b6a6a23f8d
A32: Implement Thumb-1 variant of WFE
2019-05-03 16:15:11 -04:00
Lioncash
2396d6ace9
A32: Implement Thumb-1 variant of SEV
2019-05-03 16:15:11 -04:00
Lioncash
489083438b
A32/translate_thumb: Add helper function for raising exceptions
...
Similar to the variant within the ARM-mode translator visitor. This will
be used in subsequent changes to implement the hint instructions
introduced in ARMv7.
2019-05-03 16:15:11 -04:00
Lioncash
4e21593a8b
A32: Implement Thumb-1 variant of NOP
2019-05-03 16:15:07 -04:00
Merry
a3456b39ac
Merge pull request #495 from lioncash/bkpt
...
A32: Implement Thumb-16's variant of BKPT
2019-05-03 21:10:24 +01:00
Merry
2debd4dc5a
Merge pull request #494 from lioncash/pldw
...
A32: Handle PLDW
2019-05-03 21:09:13 +01:00
Lioncash
44de480aea
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.
2019-05-03 15:59:31 -04:00
Lioncash
41c1aa61df
A32/coprocessor: Remove boost from public interface
...
Removes a boost header from the public includes in favor of using the
standard-provided std::variant.
The use of boost in public interfaces is often a dealbreaker for some
people. Given we use std::optional in the header already, we can
transition over to std::variant from boost::variant.
With this removal, this makes all of our dependencies internal to the
library itself.
2019-05-03 12:43:57 -04:00
Lioncash
ae4d168c76
a64_emit_x64: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2019-05-03 12:27:27 -04:00
Lioncash
7ab5b65706
a32_emit_x64: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2019-05-03 12:15:30 -04:00
Lioncash
2d9a155de2
emit_x64: Use const on locals where applicable
2019-05-03 11:54:44 -04:00
Lioncash
c8860a0742
emit_x64: Remove unnecessary typename in GetBasicBlock()
...
This can be deduced from the name alone.
2019-05-03 11:51:46 -04:00
Lioncash
eb8bf6630a
A32: Implement Thumb-16's variant of BKPT
2019-05-02 22:40:07 -04:00
Lioncash
b8bfe3ac51
A32/disassembler_arm: Remove <unimplemented> from hint instruction output
...
Given we now support hooking these hint instructions, we can consider
them implemented.
2019-05-02 22:09:03 -04:00
Lioncash
c93451823f
A32: Handle different variants of PLD
2019-05-02 20:48:15 -04:00
Lioncash
3a29baabc0
emit_x64_vector: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2019-05-02 19:22:49 -04:00
Lioncash
9f86639b46
emit_x64_saturation: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2019-05-02 19:22:49 -04:00
Lioncash
0b2ba9410e
emit_x64_packed: Use const on locals where applicable
...
Normalizes the use of const across the source file.
2019-05-02 19:22:49 -04:00
Lioncash
d1bb04b035
emit_x64_data_processing: Use const on locals where applicable
...
Normalizes the use of const across the source file.
2019-05-02 19:22:49 -04:00
MerryMage
244222bed5
fuzz_thumb: Disable fuzzing longer blocks
2019-05-03 00:17:48 +01:00
Merry
120d264bc9
Merge pull request #493 from lioncash/ir
...
frontend/ir/ir_emitter: Remove unnecessary logical shift overloads
2019-05-02 23:47:16 +01:00
Merry
9a9906bc1b
Merge pull request #492 from lioncash/vfp
...
A32: Rename vfp2-related files to vfp
2019-05-02 23:46:53 +01:00
Merry
f2fa3853b7
Merge pull request #491 from lioncash/hint
...
A32: Allow hooking of hint instructions in ARM mode.
2019-05-02 23:45:59 +01:00
Merry
7fb72ddf93
Merge pull request #490 from lioncash/crc32
...
A32: Implement ARM-mode CRC32 instructions
2019-05-02 23:45:09 +01:00
Lioncash
ee174e60aa
frontend/ir/ir_emitter: Remove unnecessary logical shift overloads
...
These aren't necessary anymore, now that the U32U64 overload already
exists.
2019-05-02 18:06:30 -04:00
Lioncash
78a93b0540
A64/translate/impl/impl: Mark locals const where applicable in DecodeBitMasks()
...
Follows the convention of making immutable state explicit.
2019-05-02 17:46:37 -04:00
MerryMage
71a448c66f
block_of_code: Explicitly delete copy constructor
2019-05-02 21:41:49 +01:00
MerryMage
6bf0470e09
Suppress MSVC warning C4702: unreachable code
2019-05-02 21:41:22 +01:00